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