summaryrefslogtreecommitdiff
path: root/src/gw_backend.c
diff options
context:
space:
mode:
authorGlenn Strauss <gstrauss@gluelogic.com>2022-03-25 02:11:35 -0400
committerGlenn Strauss <gstrauss@gluelogic.com>2022-03-25 08:43:42 -0400
commit38a01d98fff1c5fe096a833a6ec2922d9653548f (patch)
treea6463d3931a1c9cd43be83bfd31abd19c83c4af1 /src/gw_backend.c
parentfa5e9b5364dae268c31b4c7f79be6a1017277978 (diff)
downloadlighttpd-git-38a01d98fff1c5fe096a833a6ec2922d9653548f.tar.gz
[core] ensure socket ready before checking connect
ensure socket ready for writing before checking connect() status (sanity check in case request gets rescheduled for another reason before the socket is ready for writing)
Diffstat (limited to 'src/gw_backend.c')
-rw-r--r--src/gw_backend.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/gw_backend.c b/src/gw_backend.c
index fb884b12..83b77460 100644
--- a/src/gw_backend.c
+++ b/src/gw_backend.c
@@ -1972,6 +1972,8 @@ static handler_t gw_write_request(gw_handler_ctx * const hctx, request_st * cons
__attribute_fallthrough__
case GW_STATE_CONNECT_DELAYED:
if (hctx->state == GW_STATE_CONNECT_DELAYED) { /*(not GW_STATE_INIT)*/
+ if (!(fdevent_fdnode_interest(hctx->fdn) & FDEVENT_OUT))
+ return HANDLER_WAIT_FOR_EVENT;
int socket_error = fdevent_connect_status(hctx->fd);
if (socket_error != 0) {
gw_proc_connect_error(r, hctx->host, hctx->proc, hctx->pid,