Sat, 14 Mar 2026 12:42:48 +0100
fix wrong return error code in proxy_response_write
| src/server/safs/proxy.c | file | annotate | diff | comparison | revisions |
--- a/src/server/safs/proxy.c Fri Mar 13 20:12:49 2026 +0100 +++ b/src/server/safs/proxy.c Sat Mar 14 12:42:48 2026 +0100 @@ -163,7 +163,7 @@ proxy_unref(proxy); } -static int proxy_request_read_event(EventHandler *eh, Event *event) { +static int proxy_event(EventHandler *eh, Event *event) { ProxyRequest *proxy = event->cookie; if(http_client_process(proxy->client, event)) { if(proxy->client->error == 0) { @@ -173,7 +173,7 @@ return 0; } -static int proxy_request_read_finished(EventHandler *eh, Event *event) { +static int proxy_event_finished(EventHandler *eh, Event *event) { ProxyRequest *proxy = event->cookie; proxy_unref(proxy); return 0; @@ -192,8 +192,8 @@ if(!proxy->event.fn) { proxy->ref++; proxy->event.cookie = proxy; - proxy->event.fn = proxy_request_read_event; - proxy->event.finish = proxy_request_read_finished; + proxy->event.fn = proxy_event; + proxy->event.finish = proxy_event_finished; if(event_pollin(client->ev, st, &proxy->event)) { ret = HTTP_CLIENT_CALLBACK_ERROR; } @@ -214,11 +214,13 @@ } else if(ret < 0) { IOStream *st = proxy->sn->csd; if(st->io_errno == EWOULDBLOCK) { + log_ereport(LOG_INFORM, "proxy_response_write would block"); // Is there already an poll event for csd? if(client->last_event == &proxy->event) { // Yes, there is already an event, and it even is the event that triggert this call. // Make sure it is a write event proxy->event.events = EVENT_POLLOUT; + log_ereport(LOG_INFORM, "proxy_response_write pollout event already exists"); return HTTP_CLIENT_CALLBACK_WOULD_BLOCK; } else if(proxy->event.fn != NULL) { // There is an inactive event, probably a read event @@ -230,15 +232,16 @@ } else { proxy->ref++; proxy->event.cookie = proxy; - proxy->event.fn = proxy_request_read_event; - proxy->event.finish = proxy_request_read_finished; + proxy->event.fn = proxy_event; + proxy->event.finish = proxy_event_finished; } // Add write event + log_ereport(LOG_INFORM, "proxy_response_write pollout"); if(event_pollout(client->ev, proxy->sn->csd, &proxy->event)) { proxy_unref(proxy); log_ereport(LOG_FAILURE, "proxy_response_write: cannot add write poll"); } - return HTTP_CLIENT_CALLBACK_ERROR; + return HTTP_CLIENT_CALLBACK_WOULD_BLOCK; } } return ret; @@ -270,8 +273,8 @@ } proxy->event.cookie = proxy; - proxy->event.fn = proxy_request_read_event; - proxy->event.finish = proxy_request_read_finished; + proxy->event.fn = proxy_event; + proxy->event.finish = proxy_event_finished; if(event_pollin(client->ev, st, &proxy->event)) { return 1; }