@@ -1815,22 +1815,8 @@ static int php_cli_server_send_error_page(php_cli_server *server, php_cli_server
1815
1815
1816
1816
static int php_cli_server_dispatch_script (php_cli_server * server , php_cli_server_client * client TSRMLS_DC ) /* {{{ */
1817
1817
{
1818
- php_cli_server_client_populate_request_info (client , & SG (request_info ));
1819
- {
1820
- char * * auth ;
1821
- if (SUCCESS == zend_hash_find (& client -> request .headers , "Authorization" , sizeof ("Authorization" ), (void * * )& auth )) {
1822
- php_handle_auth_data (* auth TSRMLS_CC );
1823
- }
1824
- }
1825
- SG (sapi_headers ).http_response_code = 200 ;
1826
- if (FAILURE == php_request_startup (TSRMLS_C )) {
1827
- /* should never be happen */
1828
- destroy_request_info (& SG (request_info ));
1829
- return FAILURE ;
1830
- }
1831
1818
if (strlen (client -> request .path_translated ) != client -> request .path_translated_len ) {
1832
1819
/* can't handle paths that contain nul bytes */
1833
- destroy_request_info (& SG (request_info ));
1834
1820
return php_cli_server_send_error_page (server , client , 400 TSRMLS_CC );
1835
1821
}
1836
1822
{
@@ -1846,9 +1832,6 @@ static int php_cli_server_dispatch_script(php_cli_server *server, php_cli_server
1846
1832
}
1847
1833
1848
1834
php_cli_server_log_response (client , SG (sapi_headers ).http_response_code , NULL TSRMLS_CC );
1849
- php_request_shutdown (0 );
1850
- php_cli_server_close_connection (server , client TSRMLS_CC );
1851
- destroy_request_info (& SG (request_info ));
1852
1835
return SUCCESS ;
1853
1836
} /* }}} */
1854
1837
@@ -1910,27 +1893,35 @@ static int php_cli_server_begin_send_static(php_cli_server *server, php_cli_serv
1910
1893
}
1911
1894
/* }}} */
1912
1895
1913
- static int php_cli_server_dispatch_router (php_cli_server * server , php_cli_server_client * client TSRMLS_DC ) /* {{{ */
1914
- {
1915
- int decline = 0 ;
1916
-
1917
- if (!server -> router ) {
1918
- return 1 ;
1919
- }
1920
-
1896
+ static int php_cli_server_request_startup (php_cli_server * server , php_cli_server_client * client TSRMLS_DC ) { /* {{{ */
1897
+ char * * auth ;
1921
1898
php_cli_server_client_populate_request_info (client , & SG (request_info ));
1922
- {
1923
- char * * auth ;
1924
- if (SUCCESS == zend_hash_find (& client -> request .headers , "Authorization" , sizeof ("Authorization" ), (void * * )& auth )) {
1925
- php_handle_auth_data (* auth TSRMLS_CC );
1926
- }
1899
+ if (SUCCESS == zend_hash_find (& client -> request .headers , "Authorization" , sizeof ("Authorization" ), (void * * )& auth )) {
1900
+ php_handle_auth_data (* auth TSRMLS_CC );
1927
1901
}
1928
1902
SG (sapi_headers ).http_response_code = 200 ;
1929
1903
if (FAILURE == php_request_startup (TSRMLS_C )) {
1930
1904
/* should never be happen */
1931
1905
destroy_request_info (& SG (request_info ));
1932
- return -1 ;
1906
+ return FAILURE ;
1933
1907
}
1908
+
1909
+ return SUCCESS ;
1910
+ }
1911
+ /* }}} */
1912
+
1913
+ static int php_cli_server_request_shutdown (php_cli_server * server , php_cli_server_client * client TSRMLS_DC ) { /* {{{ */
1914
+ php_request_shutdown (0 );
1915
+ php_cli_server_close_connection (server , client TSRMLS_CC );
1916
+ destroy_request_info (& SG (request_info ));
1917
+ SG (server_context ) = NULL ;
1918
+ return SUCCESS ;
1919
+ }
1920
+ /* }}} */
1921
+
1922
+ static int php_cli_server_dispatch_router (php_cli_server * server , php_cli_server_client * client TSRMLS_DC ) /* {{{ */
1923
+ {
1924
+ int decline = 0 ;
1934
1925
if (!php_handle_special_queries (TSRMLS_C )) {
1935
1926
zend_file_handle zfd ;
1936
1927
char * old_cwd ;
@@ -1965,44 +1956,51 @@ static int php_cli_server_dispatch_router(php_cli_server *server, php_cli_server
1965
1956
free_alloca (old_cwd , use_heap );
1966
1957
}
1967
1958
1968
- if (decline ) {
1969
- php_request_shutdown_for_hook (0 );
1970
- } else {
1971
- php_request_shutdown (0 );
1972
- php_cli_server_close_connection (server , client TSRMLS_CC );
1973
- }
1974
- destroy_request_info (& SG (request_info ));
1975
-
1976
- return decline ? 1 : 0 ;
1959
+ return decline ;
1977
1960
}
1978
1961
/* }}} */
1979
1962
1980
1963
static int php_cli_server_dispatch (php_cli_server * server , php_cli_server_client * client TSRMLS_DC ) /* {{{ */
1981
1964
{
1982
- int status ;
1965
+ int is_static_file = 0 ;
1983
1966
1984
1967
SG (server_context ) = client ;
1985
- status = php_cli_server_dispatch_router (server , client TSRMLS_CC );
1968
+ if (client -> request .ext_len != 3 || memcmp (client -> request .ext , "php" , 3 ) || !client -> request .path_translated ) {
1969
+ is_static_file = 1 ;
1970
+ }
1986
1971
1987
- if (status < 0 ) {
1988
- goto fail ;
1989
- } else if (status > 0 ) {
1990
- if (client -> request .ext_len == 3 && memcmp (client -> request .ext , "php" , 3 ) == 0 && client -> request .path_translated ) {
1991
- if (SUCCESS != php_cli_server_dispatch_script (server , client TSRMLS_CC ) &&
1992
- SUCCESS != php_cli_server_send_error_page (server , client , 500 TSRMLS_CC )) {
1993
- goto fail ;
1994
- }
1995
- } else {
1996
- if (SUCCESS != php_cli_server_begin_send_static (server , client TSRMLS_CC )) {
1997
- goto fail ;
1998
- }
1972
+ if (server -> router || !is_static_file ) {
1973
+ if (FAILURE == php_cli_server_request_startup (server , client TSRMLS_CC )) {
1974
+ SG (server_context ) = NULL ;
1975
+ php_cli_server_close_connection (server , client TSRMLS_CC );
1976
+ destroy_request_info (& SG (request_info ));
1977
+ return SUCCESS ;
1978
+ }
1979
+ }
1980
+
1981
+ if (server -> router ) {
1982
+ if (!php_cli_server_dispatch_router (server , client TSRMLS_CC )) {
1983
+ php_cli_server_request_shutdown (server , client TSRMLS_CC );
1984
+ return SUCCESS ;
1999
1985
}
2000
1986
}
2001
- SG (server_context ) = 0 ;
2002
- return SUCCESS ;
2003
- fail :
2004
- SG (server_context ) = 0 ;
2005
- php_cli_server_close_connection (server , client TSRMLS_CC );
1987
+
1988
+ if (!is_static_file ) {
1989
+ if (SUCCESS == php_cli_server_dispatch_script (server , client TSRMLS_CC )
1990
+ || SUCCESS != php_cli_server_send_error_page (server , client , 500 TSRMLS_CC )) {
1991
+ php_cli_server_request_shutdown (server , client TSRMLS_CC );
1992
+ return SUCCESS ;
1993
+ }
1994
+ } else {
1995
+ if (SUCCESS != php_cli_server_begin_send_static (server , client TSRMLS_CC )) {
1996
+ php_cli_server_close_connection (server , client TSRMLS_CC );
1997
+ }
1998
+ SG (server_context ) = NULL ;
1999
+ return SUCCESS ;
2000
+ }
2001
+
2002
+ SG (server_context ) = NULL ;
2003
+ destroy_request_info (& SG (request_info ));
2006
2004
return SUCCESS ;
2007
2005
}
2008
2006
/* }}} */
0 commit comments