From daa3fde1ab9f195238061c6eb858ae5344b6527c Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sat, 2 Jan 2016 15:00:57 +1100 Subject: [PATCH] Hold semaphore till we've sent the buffer --- src/generator.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/generator.c b/src/generator.c index 3680535a..c44bf8f3 100644 --- a/src/generator.c +++ b/src/generator.c @@ -2014,20 +2014,20 @@ static void *passthrough_recv(void *arg) /* Make sure we receive a line within 90 seconds */ cksem_wait(&cs->sem); ret = read_socket_line(cs, &timeout); - cksem_post(&cs->sem); - if (ret < 1) { - reconnect_generator(ckp); LOGWARNING("Proxy %d:%s failed to read_socket_line in passthrough_recv, attempting reconnect", proxi->id, proxi->url); alive = proxi->alive = false; Close(cs->fd); + reconnect_generator(ckp); + cksem_post(&cs->sem); continue; } /* Simply forward the message on, as is, to the connector to * process. Possibly parse parameters sent by upstream pool * here */ send_proc(ckp->connector, cs->buf); + cksem_post(&cs->sem); } return NULL; }