changed the writability checker to use poll() to handle a high file descroptor in httpd-std.c.

added server.backlog-size option for httpd servers
This commit is contained in:
2017-01-25 05:28:02 +00:00
parent cf0956cad6
commit 1fffa0324e
6 changed files with 57 additions and 14 deletions

View File

@ -249,6 +249,7 @@ struct server_hostcfg_t
typedef struct server_xtn_t server_xtn_t;
struct server_xtn_t
{
int backlog_size;
int nodir; /* no directory listing */
int num; /* the server number in the xli configuration */
@ -2034,6 +2035,22 @@ static qse_httpd_server_t* attach_server (qse_httpd_t* httpd, int num, qse_xli_l
httpd_xtn = qse_httpd_getxtnstd (httpd);
qse_memset (&dope, 0, QSE_SIZEOF(dope));
pair = qse_xli_findpair (httpd_xtn->xli, list, QSE_T("backlog-size"));
if (!pair) pair = qse_xli_findpair (httpd_xtn->xli, QSE_NULL, QSE_T("server-default.backlog-size"));
if (pair == QSE_NULL || pair->val->type != QSE_XLI_STR)
{
dope.backlog_size = 256;
}
else
{
unsigned int v;
v = qse_strtoui (((qse_xli_str_t*)pair->val)->ptr, 10);
if (v <= 0) v = 256;
dope.backlog_size = v;
}
pair = qse_xli_findpair (httpd_xtn->xli, list, QSE_T("bind"));
if (pair == QSE_NULL || pair->val->type != QSE_XLI_STR)
{
@ -2042,7 +2059,6 @@ static qse_httpd_server_t* attach_server (qse_httpd_t* httpd, int num, qse_xli_l
return QSE_NULL;
}
qse_memset (&dope, 0, QSE_SIZEOF(dope));
if (qse_strntonwad (((qse_xli_str_t*)pair->val)->ptr, ((qse_xli_str_t*)pair->val)->len, &dope.nwad) <= -1)
{
/* TOOD: logging */
@ -2174,6 +2190,7 @@ static int open_config_file (qse_httpd_t* httpd)
{ QSE_T("max-nofile"), { QSE_XLI_SCM_VALSTR | QSE_XLI_SCM_KEYNODUP, 1, 1 } },
{ QSE_T("max-nproc"), { QSE_XLI_SCM_VALSTR | QSE_XLI_SCM_KEYNODUP, 1, 1 } },
{ QSE_T("hooks"), { QSE_XLI_SCM_VALLIST | QSE_XLI_SCM_KEYNODUP, 0, 0 } },
{ QSE_T("hooks.module"), { QSE_XLI_SCM_VALLIST | QSE_XLI_SCM_KEYALIAS, 0, 0 } },
{ QSE_T("hooks.module.file"), { QSE_XLI_SCM_VALSTR | QSE_XLI_SCM_KEYNODUP, 1, 1 } },
@ -2181,6 +2198,7 @@ static int open_config_file (qse_httpd_t* httpd)
QSE_XLI_SCM_KEYNODUP | QSE_XLI_SCM_VALIFFY, 0, 0 } },
{ QSE_T("server-default"), { QSE_XLI_SCM_VALLIST | QSE_XLI_SCM_KEYNODUP, 0, 0 } },
{ QSE_T("server-default.backlog-size"), { QSE_XLI_SCM_VALSTR | QSE_XLI_SCM_KEYNODUP, 1, 1 } },
{ QSE_T("server-default.ssl-cert-file"), { QSE_XLI_SCM_VALSTR | QSE_XLI_SCM_KEYNODUP, 1, 1 } },
{ QSE_T("server-default.ssl-key-file"), { QSE_XLI_SCM_VALSTR | QSE_XLI_SCM_KEYNODUP, 1, 1 } },
{ QSE_T("server-default.root"), { QSE_XLI_SCM_VALSTR | QSE_XLI_SCM_KEYNODUP, 1, 1 } },
@ -2236,6 +2254,7 @@ static int open_config_file (qse_httpd_t* httpd)
{ QSE_T("server-default.proxy.urs-prerewrite-hook"), { QSE_XLI_SCM_VALSTR | QSE_XLI_SCM_KEYNODUP, 1, 1 } },
{ QSE_T("server"), { QSE_XLI_SCM_VALLIST, 0, 0 } },
{ QSE_T("server.backlog-size"), { QSE_XLI_SCM_VALSTR | QSE_XLI_SCM_KEYNODUP, 1, 1 } },
{ QSE_T("server.bind"), { QSE_XLI_SCM_VALSTR | QSE_XLI_SCM_KEYNODUP, 1, 1 } },
{ QSE_T("server.ssl"), { QSE_XLI_SCM_VALSTR | QSE_XLI_SCM_KEYNODUP, 1, 1 } },
{ QSE_T("server.ssl-cert-file"), { QSE_XLI_SCM_VALSTR | QSE_XLI_SCM_KEYNODUP, 1, 1 } },

View File

@ -23,6 +23,8 @@ max-nproc = none;
# default server configuration
################################################
server-default {
backlog-size = 1024;
# default ssl certificate file
#ssl-cert-file = "/etc/qse/cert.pem";
# default ssl private key file
@ -160,8 +162,8 @@ server-default {
dns-server = "192.168.1.1:53";
#dns-server = "[::1]:53";
#dns-server = "@/tmp/dns.sock"; # unix socket prefixed with @
#dns-timeout = 3
#dns-retries = 2
#dns-timeout = 3;
#dns-retries = 2;
dns-queries = a, aaaa;
#urs-enabled = yes; # no, yes,
@ -174,8 +176,9 @@ server-default {
}
server {
backlog-size = 1024;
bind = "0.0.0.0:1999";
ssl = yes;
ssl = no;
# you can create certificate/key files as shown below
# openssl genrsa -out key.pem