]> granicus.if.org Git - pdns/commitdiff
improve error reporting from houseKeeping(), fix bind on FreeBSD
authorBert Hubert <bert.hubert@netherlabs.nl>
Fri, 28 Apr 2006 18:28:50 +0000 (18:28 +0000)
committerBert Hubert <bert.hubert@netherlabs.nl>
Fri, 28 Apr 2006 18:28:50 +0000 (18:28 +0000)
git-svn-id: svn://svn.powerdns.com/pdns/trunk/pdns@790 d19b8d6e-7fed-0310-83ef-9ca221ded41b

pdns/pdns_recursor.cc

index 8901d333e4cc95af48c6b2f1a8db5d5a2e0af3e9..0d1dc3351974ddb4099fd46901d6e707cf605ddf 100644 (file)
@@ -205,13 +205,13 @@ int makeClientSocket(int family)
     if(family==AF_INET) {
       sin4->sin4.sin_port = htons(port); 
       
-      if (::bind(ret, (struct sockaddr *)&*sin4, sizeof(*sin4)) >= 0) 
+      if (::bind(ret, (struct sockaddr *)&*sin4, sin4->getSocklen()) >= 0) 
        break;
     }
     else {
       sin6->sin6.sin6_port = htons(port); 
       
-      if (::bind(ret, (struct sockaddr *)&*sin6, sizeof(*sin6)) >= 0) 
+      if (::bind(ret, (struct sockaddr *)&*sin6, sin6->getSocklen()) >= 0) 
        break;
     }
   }
@@ -899,6 +899,7 @@ void doStats(void)
 }
 
 static void houseKeeping(void *)
+try
 {
   static time_t last_stat, last_rootupdate, last_prune;
   struct timeval now;
@@ -944,7 +945,11 @@ static void houseKeeping(void *)
       L<<Logger::Error<<"Failed to update . records, RCODE="<<res<<endl;
   }
 }
-
+catch(AhuException& ae)
+{
+  L<<Logger::Error<<"Fatal error: "<<ae.reason<<endl;
+  throw;
+}
 
 
 #if 0