src/server/proxy/httpclient.c

changeset 666
c99e0b352e36
parent 665
b8d5b797d090
--- a/src/server/proxy/httpclient.c	Fri Feb 06 17:07:58 2026 +0100
+++ b/src/server/proxy/httpclient.c	Fri Feb 06 19:37:41 2026 +0100
@@ -28,6 +28,10 @@
 
 #include "httpclient.h"
 
+#include <cx/buffer.h>
+
+static int client_connected(EventHandler *ev, Event *event);
+
 HttpClient* http_client_new(EventHandler *ev) {
     CxMempool *mp = cxMempoolCreate(32, CX_MEMPOOL_TYPE_PURE);
     if(!mp) {
@@ -86,3 +90,52 @@
     }
     return err;
 }
+
+int http_client_start(HttpClient *client) {
+    int socketfd = socket(AF_INET, SOCK_STREAM, 0);
+    if(socketfd < 0) {
+        return 1;
+    }
+    
+    int flags;
+    if ((flags = fcntl(socketfd, F_GETFL, 0)) == -1) {
+        flags = 0;
+    }
+    if (fcntl(socketfd, F_SETFL, flags | O_NONBLOCK) != 0) {
+        close(socketfd);
+        return 1;
+    }
+    
+    client->writeev.cookie = client;
+    client->writeev.fn = client_connected;
+    
+    int ret = ev_pollout(client->ev, socketfd, &client->writeev);
+    if(ret) {
+        close(socketfd);
+    }
+    return 1;
+}
+
+static int create_req_buffer(HttpClient *client) {
+    CxBuffer buf;
+    if(cxBufferInit(&buf, cxDefaultAllocator, NULL, 1024, CX_BUFFER_AUTO_EXTEND)) {
+        return 1;
+    }
+    
+    
+    
+    return 0;
+}
+
+static int client_connected(EventHandler *ev, Event *event) {
+    HttpClient *client = event->cookie;
+    if(create_req_buffer(client)) {
+        // TODO: set error
+        return 0; // end
+    }
+    
+    
+    return 1;
+}
+
+

mercurial