src/server/daemon/httprequest.c

changeset 193
aa8393527b1e
parent 180
98462e878ca7
parent 191
391ccd490d97
child 211
2160585200ac
--- a/src/server/daemon/httprequest.c	Thu Aug 31 16:29:49 2017 +0200
+++ b/src/server/daemon/httprequest.c	Sat Jan 13 19:01:00 2018 +0100
@@ -40,6 +40,7 @@
 #include "httprequest.h"
 #include "config.h"
 #include "vserver.h"
+#include "event.h"
 #include "httplistener.h"
 #include "func.h"
 #include "error.h"
@@ -86,7 +87,7 @@
     return S("/");
 }
 
-int handle_request(HTTPRequest *request, threadpool_t *thrpool) {
+int handle_request(HTTPRequest *request, threadpool_t *thrpool, EventHandler *ev) {
     // handle nsapi request
      
     // create pool
@@ -110,23 +111,22 @@
     sn->connection = request->connection;
     sn->netbuf = request->netbuf;
     sn->sn.pool = pool;
-    //sn->sn.csd = stream_new_from_fd(pool, request->connection->fd);
-    //sn->sn.csd = net_stream_from_fd(pool, request->connection->fd);
-    IOStream *io;
-    if(request->connection->ssl) {
-        io = sslstream_new(pool, request->connection->ssl);
-        sn->sn.ssl = 1;
-    } else {
-        io = sysstream_new(pool, request->connection->fd);
-    }
+    SessionHandler *sh = request->connection->session_handler;
+    WSBool ssl;
+    IOStream *io = sh->create_iostream(sh, request->connection, pool, &ssl);
     sn->sn.csd = httpstream_new(pool, io);
-    
+    sn->sn.ssl = ssl;
     
     sn->sn.client = pblock_create_pool(sn->sn.pool, 8);
     sn->sn.next = NULL;
     sn->sn.fill = 1;
     sn->sn.subject = NULL;
     
+    if(!ev) {
+        ev = ev_instance(get_default_event_handler());
+    }
+    sn->sn.ev = ev;
+    
     // the session needs the current server configuration
     sn->config = request->connection->listener->cfg;
 

mercurial