]> granicus.if.org Git - pdns/commitdiff
fix truncated packets!
authorBert Hubert <bert.hubert@netherlabs.nl>
Sat, 4 Aug 2007 21:27:03 +0000 (21:27 +0000)
committerBert Hubert <bert.hubert@netherlabs.nl>
Sat, 4 Aug 2007 21:27:03 +0000 (21:27 +0000)
git-svn-id: svn://svn.powerdns.com/pdns/trunk/pdns@1080 d19b8d6e-7fed-0310-83ef-9ca221ded41b

pdns/nameserver.cc

index e16580c6613055e5ceb9203a7aad746e91317777..4946d1e12e9e93c6d8736ef9e2b1cfc62a93c22a 100644 (file)
@@ -181,11 +181,11 @@ void UDPNameserver::send(DNSPacket *p)
   const char *buffer=p->getData();
   DLOG(L<<Logger::Notice<<"Sending a packet to "<< p->remote.toString() <<" ("<<p->len<<" octets)"<<endl);
   if(p->len>512) {
-    shared_ptr<DNSPacket> p(new DNSPacket(*p));
-    p->truncate(512);
-    buffer=p->getData();
-    if(sendto(p->getSocket(),buffer,p->len,0,(struct sockaddr *)(&p->remote),p->remote.getSocklen())<0) 
-      L<<Logger::Error<<"Error sending reply with sendto (socket="<<p->getSocket()<<"): "<<strerror(errno)<<endl;
+    shared_ptr<DNSPacket> sharedp(new DNSPacket(*p));
+    sharedp->truncate(512);
+    buffer=sharedp->getData();
+    if(sendto(sharedp->getSocket(),buffer,sharedp->len,0,(struct sockaddr *)(&sharedp->remote), sharedp->remote.getSocklen())<0) 
+      L<<Logger::Error<<"Error sending reply with sendto (socket="<<sharedp->getSocket()<<"): "<<strerror(errno)<<endl;
   }
   else {
     if(sendto(p->getSocket(),buffer,p->len,0,(struct sockaddr *)(&p->remote),p->remote.getSocklen())<0)