From eacdd9f730c09bc59e3906e4f2eff6b8b3051169 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Fri, 21 Sep 2012 22:54:26 +0200 Subject: lib/tsocket: fix receiving of udp packets from 0 bytes (bug #9184) It's possible for a client to send 0 bytes in a UDP packet, we need still need to call recvfrom() and skip the invalid packet at a higher level. Otherwise the kernel receive queue is blocked. metze --- lib/tsocket/tsocket_bsd.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'lib/tsocket') diff --git a/lib/tsocket/tsocket_bsd.c b/lib/tsocket/tsocket_bsd.c index 9e80065227..d5721b4d94 100644 --- a/lib/tsocket/tsocket_bsd.c +++ b/lib/tsocket/tsocket_bsd.c @@ -876,10 +876,6 @@ static void tdgram_bsd_recvfrom_handler(void *private_data) bool retry; ret = tsocket_bsd_pending(bsds->fd); - if (ret == 0) { - /* retry later */ - return; - } err = tsocket_bsd_error_from_errno(ret, errno, &retry); if (retry) { /* retry later */ @@ -889,6 +885,7 @@ static void tdgram_bsd_recvfrom_handler(void *private_data) return; } + /* note that 'ret' can be 0 here */ state->buf = talloc_array(state, uint8_t, ret); if (tevent_req_nomem(state->buf, req)) { return; -- cgit