X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=adns.git;a=blobdiff_plain;f=src%2Fquery.c;h=c9ad8fd862f8edf39fe8eba94e05a49617c46e2b;hp=667ec6d8437ea3790451ec585a1ec59d1044ae36;hb=37e28fde2d1d358ca0b887fc131f0ca108318b2a;hpb=aa98c861c1bc8aa0c91a38afbc1fa8f30b85bdf0;ds=inline diff --git a/src/query.c b/src/query.c index 667ec6d..c9ad8fd 100644 --- a/src/query.c +++ b/src/query.c @@ -71,7 +71,9 @@ static adns_status mkquery(adns_state ads, const char *owner, int ol, int id, } void adns__quproc_tosend(adns_state ads, adns_query qu, struct timeval now) { - /* Query must be on the `tosend' queue, and guarantees to remove it. */ + /* Query must be on the `tosend' queue, and guarantees to remove it. + * fixme: Do not send more than 512-byte udp datagrams + */ struct sockaddr_in servaddr; int serv; @@ -85,13 +87,13 @@ void adns__quproc_tosend(adns_state ads, adns_query qu, struct timeval now) { memset(&servaddr,0,sizeof(servaddr)); servaddr.sin_family= AF_INET; servaddr.sin_addr= ads->servers[serv].addr; - servaddr.sin_port= htons(53); + servaddr.sin_port= htons(NSPORT); r= sendto(ads->udpsocket,qu->querymsg,qu->querylen,0,&servaddr,sizeof(servaddr)); if (r<0 && errno == EMSGSIZE) { qu->nextudpserver= -1; } else { if (r<0) { - diag("sendto %s failed: %s",inet_ntoa(servaddr.sin_addr),strerror(errno)); + warn("sendto %s failed: %s",inet_ntoa(servaddr.sin_addr),strerror(errno)); } DLIST_UNLINK(ads->tosend,qu); timevaladd(&now,UDPRETRYMS); @@ -104,6 +106,7 @@ void adns__quproc_tosend(adns_state ads, adns_query qu, struct timeval now) { } } + /* fixme: TCP queries preceded by length */ for (;;) { serv= tcpserver_get(ads); if (serv<0) { r=0; break; }