# HG changeset patch # User Olaf Wintermann # Date 1482857640 -3600 # Node ID 44415e4399ce7f93683c1a9d247b907adc2e44dd # Parent 87b405d61f6431310a77a9cf9a549726733f64e2 adds blockingio config diff -r 87b405d61f64 -r 44415e4399ce src/server/daemon/config.c --- a/src/server/daemon/config.c Tue Dec 27 17:19:00 2016 +0100 +++ b/src/server/daemon/config.c Tue Dec 27 17:54:00 2016 +0100 @@ -575,6 +575,13 @@ obj->directives, sstr("Threadpool"))); + sstr_t blockingio = cfg_directivelist_get_str( + obj->directives, + sstr("BlockingIO")); + if(blockingio.ptr) { + lc.blockingio = util_getboolean_s(blockingio, WS_FALSE); + } + sstr_t ssl = cfg_directivelist_get_str(obj->directives, S("SSL")); if(util_getboolean_s(ssl, WS_FALSE)) { sstr_t cert = cfg_directivelist_get_str(obj->directives, S("Cert")); diff -r 87b405d61f64 -r 44415e4399ce src/server/daemon/httplistener.c --- a/src/server/daemon/httplistener.c Tue Dec 27 17:19:00 2016 +0100 +++ b/src/server/daemon/httplistener.c Tue Dec 27 17:54:00 2016 +0100 @@ -153,8 +153,11 @@ if(listener->threadpool == NULL) { listener->threadpool = get_default_threadpool(); } - //listener->session_handler = create_basic_session_handler(); - listener->session_handler = create_event_session_handler(); + if(conf->blockingio) { + listener->session_handler = create_basic_session_handler(); + } else { + listener->session_handler = create_event_session_handler(); + } listener->nacceptors = conf->nacceptors; listener->port = conf->port; listener->ref = 1; @@ -401,7 +404,10 @@ if(ls->ssl) { SSL *ssl = SSL_new(ls->ssl->sslctx); SSL_set_fd(ssl, clientfd); - if(SSL_accept(ssl) <= 0) { + int ssl_ar = SSL_accept(ssl); + if(ssl_ar <= 0) { + int error = SSL_get_error(ssl, ssl_ar); + log_ereport(LOG_INFORM, "SSL accept error: %d", error); free(conn); conn = NULL; } else { diff -r 87b405d61f64 -r 44415e4399ce src/server/daemon/httplistener.h --- a/src/server/daemon/httplistener.h Tue Dec 27 17:19:00 2016 +0100 +++ b/src/server/daemon/httplistener.h Tue Dec 27 17:54:00 2016 +0100 @@ -62,6 +62,7 @@ char *address; int port; int nacceptors; + WSBool blockingio; WSBool ssl; sstr_t certfile; sstr_t privkeyfile;