diff --git a/lib/ns/include/ns/client.h b/lib/ns/include/ns/client.h index f78abc2149..cd6c9c8a47 100644 --- a/lib/ns/include/ns/client.h +++ b/lib/ns/include/ns/client.h @@ -83,9 +83,9 @@ /*% nameserver client structure */ struct ns_client { unsigned int magic; - isc_mem_t * mctx; - ns_server_t * sctx; - ns_clientmgr_t * manager; + isc_mem_t *mctx; + ns_server_t *sctx; + ns_clientmgr_t *manager; int state; int newstate; int naccepts; @@ -95,7 +95,7 @@ struct ns_client { int nupdates; int nctls; int references; - bool needshutdown; /* + bool needshutdown; /* * Used by clienttest to get * the client to go from * inactive to free state @@ -103,26 +103,26 @@ struct ns_client { * client's task. */ unsigned int attributes; - isc_task_t * task; - dns_view_t * view; - dns_dispatch_t * dispatch; - isc_socket_t * udpsocket; - isc_socket_t * tcplistener; - isc_socket_t * tcpsocket; - unsigned char * tcpbuf; + isc_task_t *task; + dns_view_t *view; + dns_dispatch_t *dispatch; + isc_socket_t *udpsocket; + isc_socket_t *tcplistener; + isc_socket_t *tcpsocket; + unsigned char *tcpbuf; dns_tcpmsg_t tcpmsg; - bool tcpmsg_valid; - isc_timer_t * timer; - isc_timer_t * delaytimer; - bool timerset; - dns_message_t * message; - isc_socketevent_t * sendevent; - isc_socketevent_t * recvevent; - unsigned char * recvbuf; - dns_rdataset_t * opt; + bool tcpmsg_valid; + isc_timer_t *timer; + isc_timer_t *delaytimer; + bool timerset; + dns_message_t *message; + isc_socketevent_t *sendevent; + isc_socketevent_t *recvevent; + unsigned char *recvbuf; + dns_rdataset_t *opt; uint16_t udpsize; uint16_t extflags; - int16_t ednsversion; /* -1 noedns */ + int16_t ednsversion; /* -1 noedns */ void (*next)(ns_client_t *); void (*shutdown)(void *arg, isc_result_t result); void *shutdown_arg; @@ -130,20 +130,20 @@ struct ns_client { isc_time_t requesttime; isc_stdtime_t now; isc_time_t tnow; - dns_name_t signername; /*%< [T]SIG key name */ - dns_name_t * signer; /*%< NULL if not valid sig */ - bool mortal; /*%< Die after handling request */ - bool pipelined; /*%< TCP queries not in sequence */ + dns_name_t signername; /*%< [T]SIG key name */ + dns_name_t *signer; /*%< NULL if not valid sig */ + bool mortal; /*%< Die after handling request */ + bool pipelined; /*%< TCP queries not in sequence */ isc_quota_t *tcpquota; isc_quota_t *recursionquota; ns_interface_t *interface; isc_sockaddr_t peeraddr; - bool peeraddr_valid; + bool peeraddr_valid; isc_netaddr_t destaddr; isc_sockaddr_t destsockaddr; - dns_ecs_t ecs; /*%< EDNS client subnet sent by client */ + dns_ecs_t ecs; /*%< EDNS client subnet sent by client */ struct in6_pktinfo pktinfo; isc_dscp_t dscp; diff --git a/lib/ns/xfrout.c b/lib/ns/xfrout.c index f98ab6b7f5..502b10079b 100644 --- a/lib/ns/xfrout.c +++ b/lib/ns/xfrout.c @@ -1635,6 +1635,7 @@ xfrout_senddone(isc_task_t *task, isc_event_t *event) { UNUSED(task); INSIST(event->ev_type == ISC_SOCKEVENT_SENDDONE); + INSIST((xfr->client->attributes & NS_CLIENTATTR_TCP) != 0); xfr->sends--; INSIST(xfr->sends == 0);