Lines Matching defs:conn

156 maybe_free_connection(controlconnection_t *conn) {
157 controllistener_t *listener = conn->listener;
159 if (conn->buffer != NULL)
160 isc_buffer_free(&conn->buffer);
162 if (conn->timer != NULL)
163 isc_timer_detach(&conn->timer);
165 if (conn->ccmsg_valid) {
166 isccc_ccmsg_cancelread(&conn->ccmsg);
170 if (conn->sending) {
171 isc_socket_cancel(conn->sock, listener->task,
176 ISC_LIST_UNLINK(listener->connections, conn, link);
182 isc_mem_put(listener->mctx, conn, sizeof(*conn));
187 controlconnection_t *conn;
205 for (conn = ISC_LIST_HEAD(listener->connections);
206 conn != NULL;
207 conn = next)
209 next = ISC_LIST_NEXT(conn, link);
210 maybe_free_connection(conn);
272 controlconnection_t *conn = event->ev_arg;
273 controllistener_t *listener = conn->listener;
277 REQUIRE(conn->sending);
281 conn->sending = ISC_FALSE;
298 result = isccc_ccmsg_readmessage(&conn->ccmsg, listener->task,
299 control_recvmessage, conn);
301 isc_socket_detach(&conn->sock);
302 maybe_free_connection(conn);
322 controlconnection_t *conn;
343 conn = event->ev_arg;
344 listener = conn->listener;
353 if (conn->ccmsg.result != ISC_R_SUCCESS) {
354 if (conn->ccmsg.result != ISC_R_CANCELED &&
355 conn->ccmsg.result != ISC_R_EOF)
356 log_invalid(&conn->ccmsg, conn->ccmsg.result);
368 ccregion.rstart = isc_buffer_base(&conn->ccmsg.buffer);
369 ccregion.rend = isc_buffer_used(&conn->ccmsg.buffer);
382 log_invalid(&conn->ccmsg, result);
388 log_invalid(&conn->ccmsg, ISCCC_R_BADAUTH);
394 log_invalid(&conn->ccmsg, ISC_R_FAILURE);
405 log_invalid(&conn->ccmsg, ISC_R_FAILURE);
411 log_invalid(&conn->ccmsg, ISCCC_R_CLOCKSKEW);
415 log_invalid(&conn->ccmsg, ISC_R_FAILURE);
424 log_invalid(&conn->ccmsg, ISCCC_R_EXPIRED);
436 log_invalid(&conn->ccmsg, result);
440 if (conn->nonce != 0 &&
442 conn->nonce != nonce)) {
443 log_invalid(&conn->ccmsg, ISCCC_R_BADAUTH);
454 if (conn->nonce == 0) {
455 while (conn->nonce == 0)
456 isc_random_get(&conn->nonce);
489 isccc_cc_defineuint32(_ctrl, "_nonce", conn->nonce) == NULL)
492 if (conn->buffer == NULL) {
494 &conn->buffer, 2 * 2048);
499 isc_buffer_clear(conn->buffer);
501 isc_buffer_add(conn->buffer, 4);
503 result = isccc_cc_towire(response, &conn->buffer, algorithm, &secret);
507 isc_buffer_init(&b, conn->buffer->base, 4);
508 isc_buffer_putuint32(&b, conn->buffer->used - 4);
510 r.base = conn->buffer->base;
511 r.length = conn->buffer->used;
513 result = isc_socket_send(conn->sock, &r, task, control_senddone, conn);
516 conn->sending = ISC_TRUE;
534 isc_socket_detach(&conn->sock);
535 isccc_ccmsg_invalidate(&conn->ccmsg);
536 conn->ccmsg_valid = ISC_FALSE;
537 maybe_free_connection(conn);
543 controlconnection_t *conn = event->ev_arg;
547 isc_timer_detach(&conn->timer);
548 maybe_free_connection(conn);
555 controlconnection_t *conn;
559 conn = isc_mem_get(listener->mctx, sizeof(*conn));
560 if (conn == NULL)
563 conn->sock = sock;
564 isccc_ccmsg_init(listener->mctx, sock, &conn->ccmsg);
567 isccc_ccmsg_setmaxsize(&conn->ccmsg, 32768);
569 conn->ccmsg_valid = ISC_TRUE;
570 conn->sending = ISC_FALSE;
571 conn->buffer = NULL;
572 conn->timer = NULL;
576 control_timeout, conn, &conn->timer);
580 conn->listener = listener;
581 conn->nonce = 0;
582 ISC_LINK_INIT(conn, link);
584 result = isccc_ccmsg_readmessage(&conn->ccmsg, listener->task,
585 control_recvmessage, conn);
589 ISC_LIST_APPEND(listener->connections, conn, link);
593 if (conn->buffer != NULL)
594 isc_buffer_free(&conn->buffer);
595 isccc_ccmsg_invalidate(&conn->ccmsg);
596 if (conn->timer != NULL)
597 isc_timer_detach(&conn->timer);
598 isc_mem_put(listener->mctx, conn, sizeof(*conn));