From: Frank Lahm Date: Tue, 16 Nov 2010 10:15:32 +0000 (+0100) Subject: Merge branch-2-1 X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=netatalk.git;a=commitdiff_plain;h=e83a5199e4f35ceea335dc3075b23e8d983e7642 Merge branch-2-1 --- e83a5199e4f35ceea335dc3075b23e8d983e7642 diff --cc etc/cnid_dbd/cnid_metad.c index 66108c01,3ce9151c..23a6fd02 --- a/etc/cnid_dbd/cnid_metad.c +++ b/etc/cnid_dbd/cnid_metad.c @@@ -597,7 -604,9 +597,8 @@@ int main(int argc, char *argv[] if (rqstfd <= 0) continue; - ret = readt(rqstfd, &len, sizeof(int), 4); - /* TODO: Check out read errors, broken pipe etc. in libatalk. Is - SIGIPE ignored there? Answer: Ignored for dsi, but not for asp ... */ - ret = readt(rqstfd, &len, sizeof(int), 1, 5); ++ ret = readt(rqstfd, &len, sizeof(int), 1, 4); ++ if (!ret) { /* already close */ goto loop_end; diff --cc etc/cnid_dbd/comm.c index 8038f266,284ecae4..89355d76 --- a/etc/cnid_dbd/comm.c +++ b/etc/cnid_dbd/comm.c @@@ -246,16 -264,8 +246,16 @@@ int comm_rcv(struct cnid_dbd_rqst *rqst 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), CNID_DBD_TIMEOUT)) - 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)); @@@ -264,8 -274,7 +264,8 @@@ return 0; } rqst->name = nametmp; - if (rqst->namelen && readt(cur_fd, rqst->name, rqst->namelen, CNID_DBD_TIMEOUT) - 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;