X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=netatalk.git;a=blobdiff_plain;f=etc%2Fcnid_dbd%2Fusockfd.c;h=888d914b39bf1fcb23bac0625cdc24037d31afd7;hp=b6bbe6d3492139c8e5a968b8545e4a6797e1549c;hb=5c46c85ecd8375fd1573b1142ad892d3c6680ea2;hpb=0568edf3f7bd5d9ced21765c4cbcc3c053eefadd diff --git a/etc/cnid_dbd/usockfd.c b/etc/cnid_dbd/usockfd.c index b6bbe6d3..888d914b 100644 --- a/etc/cnid_dbd/usockfd.c +++ b/etc/cnid_dbd/usockfd.c @@ -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;