]> arthur.barton.de Git - netatalk.git/blobdiff - etc/cnid_dbd/usockfd.c
use SO_RCVTIMEO rather than alarm in cnid_metad
[netatalk.git] / etc / cnid_dbd / usockfd.c
index b6bbe6d3492139c8e5a968b8545e4a6797e1549c..888d914b39bf1fcb23bac0625cdc24037d31afd7 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: usockfd.c,v 1.4 2009-10-18 19:02:43 didg Exp $
+ * $Id: usockfd.c,v 1.5 2009-10-18 20:21:09 didg Exp $
  *
  * Copyright (C) Joerg Lenneis 2003
  * All Rights Reserved.  See COPYING.
@@ -145,6 +145,7 @@ int usockfd_check(int sockfd, const sigset_t *sigset)
     socklen_t size;
     fd_set readfds;
     int ret;
+    struct timeval tv;
      
     FD_ZERO(&readfds);
     FD_SET(sockfd, &readfds);
@@ -166,6 +167,13 @@ int usockfd_check(int sockfd, const sigset_t *sigset)
                 strerror(errno));
             return -1;
         }
+        tv.tv_sec = 5;
+        tv.tv_usec = 0;
+        if (setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv)) < 0) {
+            LOG(log_error, logtype_cnid, "set SO_RCVTIMEO: %s", strerror(errno));
+            close(fd);
+            return -1;
+        }
         return fd;
     } else
         return 0;