src/server/proxy/httpclient.c

changeset 704
778dcf4ad63c
parent 703
395c62fac7e5
child 706
df64b4b79912
--- a/src/server/proxy/httpclient.c	Tue Feb 24 21:28:06 2026 +0100
+++ b/src/server/proxy/httpclient.c	Wed Feb 25 22:16:20 2026 +0100
@@ -194,22 +194,19 @@
     return http_client_add_request_header(client, cx_mutstr("transfer-encoding"), cx_mutstr("chunked"));
 }
 
-static int client_start_poll(HttpClient *client, int in) {
+static int client_start_poll(HttpClient *client) {
     client->event.fn = client_connected;
     client->event.finish = client_finished;
-    if(in) {
-        return ev_pollin(client->ev, client->socketfd, &client->event);
-    } else {
-        return ev_pollout(client->ev, client->socketfd, &client->event);
-    }
+    return ev_poll(client->ev, client->socketfd, &client->event);
 }
 
 int http_client_start(HttpClient *client) {
+    client->event.events = EVENT_POLLOUT;
     client->event.cookie = client;
     if(client->socketfd != -1) {
         int ret = client_connected(client->ev, &client->event);
         if(ret != 0) {
-            return client_start_poll(client, 1); // TODO: check event type
+            return client_start_poll(client);
         }
         return 0;
     }
@@ -222,12 +219,12 @@
         return 1;
     }
     client->socketfd = socketfd;
-    
+      
     int ret = 1;
     if(connect(socketfd, client->addr, client->addrlen)) {
         int err = errno;
         if(err == EINPROGRESS) {
-            ret = client_start_poll(client, 1);
+            ret = client_start_poll(client);
         } else {
             log_ereport(LOG_FAILURE, "http-client-start: connect failed: %s", strerror(err));
         }
@@ -326,7 +323,7 @@
     event->events = EVENT_POLLIN;
     client->stage = 1;
     
-    if(client_read_response_header(client)) {
+    if(client_read_response_header(client)) {  
         return client->error == 0;
     }
     int ret = 0;
@@ -472,9 +469,9 @@
     
     unsigned char *buffer = client->buffer.inbuf + client->buffer.cursize;
     size_t nbytes = client->buffer.maxsize - client->buffer.cursize;
-          
+    
     ssize_t r;
-    while((r = read(client->socketfd, buffer, nbytes)) > 0) {     
+    while((r = read(client->socketfd, client->buffer.inbuf + client->buffer.cursize, client->buffer.maxsize - client->buffer.cursize)) > 0) {     
         client->buffer.cursize += r;
         if(!client->response_header_complete) {
             switch(http_parser_process(client->parser)) {

mercurial