[SCM] Samba Shared Repository - branch master updated

Andrew Bartlett abartlet at samba.org
Tue Oct 23 06:45:03 MDT 2012


The branch, master has been updated
       via  d2aa785 lib/tsocket: fix loop in tdgram_bsd_recvfrom() (bug #9184)
      from  7138b21 build: Add #define FREEBSD on FreeBSD

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit d2aa785290a283e06624f22a381a7ea02baae5ad
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Oct 2 12:20:26 2012 +0200

    lib/tsocket: fix loop in tdgram_bsd_recvfrom() (bug #9184)
    
    If the socket is not readable yet, we need to retry
    if tsocket_bsd_pending() returns 0.
    
    See also
    https://lists.samba.org/archive/samba-technical/2012-October/087164.html
    
    metze
    
    Autobuild-User(master): Andrew Bartlett <abartlet at samba.org>
    Autobuild-Date(master): Tue Oct 23 14:44:21 CEST 2012 on sn-devel-104

-----------------------------------------------------------------------

Summary of changes:
 lib/tsocket/tsocket_bsd.c |   10 +++++++++-
 1 files changed, 9 insertions(+), 1 deletions(-)


Changeset truncated at 500 lines:

diff --git a/lib/tsocket/tsocket_bsd.c b/lib/tsocket/tsocket_bsd.c
index d5721b4..135fd02 100644
--- a/lib/tsocket/tsocket_bsd.c
+++ b/lib/tsocket/tsocket_bsd.c
@@ -792,7 +792,7 @@ static int tdgram_bsd_set_writeable_handler(struct tdgram_bsd *bsds,
 
 struct tdgram_bsd_recvfrom_state {
 	struct tdgram_context *dgram;
-
+	bool first_try;
 	uint8_t *buf;
 	size_t len;
 	struct tsocket_address *src;
@@ -826,6 +826,7 @@ static struct tevent_req *tdgram_bsd_recvfrom_send(TALLOC_CTX *mem_ctx,
 	}
 
 	state->dgram	= dgram;
+	state->first_try= true;
 	state->buf	= NULL;
 	state->len	= 0;
 	state->src	= NULL;
@@ -876,6 +877,13 @@ static void tdgram_bsd_recvfrom_handler(void *private_data)
 	bool retry;
 
 	ret = tsocket_bsd_pending(bsds->fd);
+	if (state->first_try && ret == 0) {
+		state->first_try = false;
+		/* retry later */
+		return;
+	}
+	state->first_try = false;
+
 	err = tsocket_bsd_error_from_errno(ret, errno, &retry);
 	if (retry) {
 		/* retry later */


-- 
Samba Shared Repository


More information about the samba-cvs mailing list