X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=netatalk.git;a=blobdiff_plain;f=etc%2Fcnid_dbd%2Fcomm.c;h=89355d767b8c0072a01d42763a935850b03e5a9c;hp=284ecae4c2fcb7f4f2664253c957de689eca5461;hb=e83a5199e4f35ceea335dc3075b23e8d983e7642;hpb=e15fadbce86d21198c93f9c506f8b28743f3582e diff --git a/etc/cnid_dbd/comm.c b/etc/cnid_dbd/comm.c index 284ecae4..89355d76 100644 --- a/etc/cnid_dbd/comm.c +++ b/etc/cnid_dbd/comm.c @@ -1,7 +1,7 @@ /* - * $Id: comm.c,v 1.6 2009-10-19 08:09:07 didg Exp $ - * * Copyright (C) Joerg Lenneis 2003 + * Copyright (C) Frank Lahm 2010 + * * All Rights Reserved. See COPYING. */ @@ -13,37 +13,19 @@ #include #include #include - -#ifdef HAVE_UNISTD_H #include -#endif - #include -#define _XPG4_2 1 -#include - -#ifdef HAVE_SYS_TYPES_H #include -#endif - -#ifdef HAVE_SYS_TIME_H #include -#endif - -#ifdef HAVE_SYS_UIO_H #include -#endif - -#ifdef HAVE_SYS_SOCKET_H +#define _XPG4_2 1 #include -#endif - #include - #include #include #include +#include #include #include "db_param.h" @@ -264,8 +246,16 @@ int comm_rcv(struct cnid_dbd_rqst *rqst, time_t timeout, const sigset_t *sigmask if (!cur_fd) return 0; + + LOG(log_maxdebug, logtype_cnid, "comm_rcv: got data on fd %u", cur_fd); + + if (setnonblock(cur_fd, 1) != 0) { + LOG(log_error, logtype_cnid, "comm_rcv: setnonblock: %s", strerror(errno)); + return -1; + } + nametmp = rqst->name; - if ((b = readt(cur_fd, rqst, sizeof(struct cnid_dbd_rqst), 1, 5)) + if ((b = readt(cur_fd, rqst, sizeof(struct cnid_dbd_rqst), 1, CNID_DBD_TIMEOUT)) != sizeof(struct cnid_dbd_rqst)) { if (b) LOG(log_error, logtype_cnid, "error reading message header: %s", strerror(errno)); @@ -274,7 +264,8 @@ int comm_rcv(struct cnid_dbd_rqst *rqst, time_t timeout, const sigset_t *sigmask return 0; } rqst->name = nametmp; - if (rqst->namelen && readt(cur_fd, rqst->name, rqst->namelen, 1, 5) != rqst->namelen) { + if (rqst->namelen && readt(cur_fd, rqst->name, rqst->namelen, 1, CNID_DBD_TIMEOUT) + != rqst->namelen) { LOG(log_error, logtype_cnid, "error reading message name: %s", strerror(errno)); invalidate_fd(cur_fd); return 0; @@ -283,6 +274,8 @@ int comm_rcv(struct cnid_dbd_rqst *rqst, time_t timeout, const sigset_t *sigmask needs zero terminated strings. */ rqst->name[rqst->namelen] = '\0'; + LOG(log_maxdebug, logtype_cnid, "comm_rcv: got %u bytes", b + rqst->namelen); + return 1; }