--- 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; +} + +