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:
		| @ -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      }  }, | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
		Reference in New Issue
	
	Block a user