From: Sascha Schumann Date: Tue, 26 Nov 2002 05:15:55 +0000 (+0000) Subject: Add sapi_get_fd() and implement it for the Apache/thttpd SAPIs. X-Git-Tag: RELEASE_1_0b3~302 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=09f463ddae79c53a065d28da61a33fda96669f84;p=php Add sapi_get_fd() and implement it for the Apache/thttpd SAPIs. --- diff --git a/main/SAPI.c b/main/SAPI.c index fd9b089bc5..f77c14ee11 100644 --- a/main/SAPI.c +++ b/main/SAPI.c @@ -851,6 +851,15 @@ SAPI_API char *sapi_getenv(char *name, size_t name_len TSRMLS_DC) } } +SAPI_API int sapi_get_fd(int *fd TSRMLS_DC) +{ + if (sapi_module.get_fd) { + return sapi_module.get_fd(fd TSRMLS_CC); + } else { + return -1; + } +} + /* * Local variables: * tab-width: 4 diff --git a/main/SAPI.h b/main/SAPI.h index f80d19f7d3..d0238516b5 100644 --- a/main/SAPI.h +++ b/main/SAPI.h @@ -186,6 +186,8 @@ SAPI_API void sapi_get_default_content_type_header(sapi_header_struct *default_h SAPI_API size_t sapi_apply_default_charset(char **mimetype, size_t len TSRMLS_DC); SAPI_API void sapi_activate_headers_only(TSRMLS_D); +SAPI_API int sapi_get_fd(int *fd TSRMLS_DC); + struct _sapi_module_struct { char *name; char *pretty_name; @@ -217,12 +219,16 @@ struct _sapi_module_struct { void (*block_interruptions)(void); void (*unblock_interruptions)(void); + void (*default_post_reader)(TSRMLS_D); void (*treat_data)(int arg, char *str, zval *destArray TSRMLS_DC); char *executable_location; int php_ini_ignore; + + int (*get_fd)(int *fd TSRMLS_DC); + }; diff --git a/sapi/apache/mod_php4.c b/sapi/apache/mod_php4.c index ce060e3c75..eac37883a7 100644 --- a/sapi/apache/mod_php4.c +++ b/sapi/apache/mod_php4.c @@ -343,6 +343,23 @@ static char *php_apache_getenv(char *name, size_t name_len TSRMLS_DC) } /* }}} */ +/* {{{ sapi_apache_get_fd + */ +static int sapi_apache_get_fd(int *nfd TSRMLS_DC) +{ + request_rec *r = SG(server_context); + int fd; + + fd = r->connection->client->fd; + + if (fd >= 0) { + if (nfd) *nfd = fd; + return 0; + } + return -1; +} +/* }}} */ + /* {{{ sapi_module_struct apache_sapi_module */ static sapi_module_struct apache_sapi_module = { @@ -382,7 +399,11 @@ static sapi_module_struct apache_sapi_module = { unblock_alarms, /* Unblock interruptions */ #endif - STANDARD_SAPI_MODULE_PROPERTIES + NULL, /* default post reader */ + NULL, /* treat data */ + NULL, /* exe location */ + 0, /* ini ignore */ + sapi_apache_get_fd }; /* }}} */ diff --git a/sapi/thttpd/thttpd.c b/sapi/thttpd/thttpd.c index 4f196973ca..96ba377aec 100644 --- a/sapi/thttpd/thttpd.c +++ b/sapi/thttpd/thttpd.c @@ -382,6 +382,12 @@ static int php_thttpd_startup(sapi_module_struct *sapi_module) return SUCCESS; } +static int sapi_thttpd_get_fd(int *nfd TSRMLS_DC) +{ + if (nfd) *nfd = TG(hc)->conn_fd; + return 0; +} + static sapi_module_struct thttpd_sapi_module = { "thttpd", "thttpd", @@ -411,7 +417,11 @@ static sapi_module_struct thttpd_sapi_module = { NULL, /* Block interruptions */ NULL, /* Unblock interruptions */ - STANDARD_SAPI_MODULE_PROPERTIES + NULL, + NULL, + NULL, + 0, + sapi_thttpd_get_fd }; static void thttpd_module_main(int show_source TSRMLS_DC)