Changeset 1993
- Timestamp:
- 09/07/2007 11:24:28 PM (13 months ago)
- Files:
-
- 1 modified
-
branches/lighttpd-1.4.x/src/mod_fastcgi.c (modified) (17 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/lighttpd-1.4.x/src/mod_fastcgi.c
r1984 r1993 50 50 #endif 51 51 52 #define FCGI_ENV_ADD_CHECK(ret, con) \ 53 if (ret == -1) { \ 54 con->http_status = 400; \ 55 con->file_finished = 1; \ 56 return -1; \ 57 }; 52 58 53 59 /* … … 1772 1778 srv->tmp_buf->ptr[srv->tmp_buf->used++] = '\0'; 1773 1779 1774 fcgi_env_add(p->fcgi_env, CONST_BUF_LEN(srv->tmp_buf), CONST_BUF_LEN(ds->value));1780 FCGI_ENV_ADD_CHECK(fcgi_env_add(p->fcgi_env, CONST_BUF_LEN(srv->tmp_buf), CONST_BUF_LEN(ds->value)),con); 1775 1781 } 1776 1782 } … … 1799 1805 srv->tmp_buf->ptr[srv->tmp_buf->used++] = '\0'; 1800 1806 1801 fcgi_env_add(p->fcgi_env, CONST_BUF_LEN(srv->tmp_buf), CONST_BUF_LEN(ds->value));1807 FCGI_ENV_ADD_CHECK(fcgi_env_add(p->fcgi_env, CONST_BUF_LEN(srv->tmp_buf), CONST_BUF_LEN(ds->value)), con); 1802 1808 } 1803 1809 } … … 1843 1849 1844 1850 1845 fcgi_env_add(p->fcgi_env, CONST_STR_LEN("SERVER_SOFTWARE"), CONST_STR_LEN(PACKAGE_NAME"/"PACKAGE_VERSION));1851 FCGI_ENV_ADD_CHECK(fcgi_env_add(p->fcgi_env, CONST_STR_LEN("SERVER_SOFTWARE"), CONST_STR_LEN(PACKAGE_NAME"/"PACKAGE_VERSION)),con) 1846 1852 1847 1853 if (con->server_name->used) { 1848 fcgi_env_add(p->fcgi_env, CONST_STR_LEN("SERVER_NAME"), CONST_BUF_LEN(con->server_name));1854 FCGI_ENV_ADD_CHECK(fcgi_env_add(p->fcgi_env, CONST_STR_LEN("SERVER_NAME"), CONST_BUF_LEN(con->server_name)),con) 1849 1855 } else { 1850 1856 #ifdef HAVE_IPV6 … … 1857 1863 s = inet_ntoa(srv_sock->addr.ipv4.sin_addr); 1858 1864 #endif 1859 fcgi_env_add(p->fcgi_env, CONST_STR_LEN("SERVER_NAME"), s, strlen(s));1860 } 1861 1862 fcgi_env_add(p->fcgi_env, CONST_STR_LEN("GATEWAY_INTERFACE"), CONST_STR_LEN("CGI/1.1"));1865 FCGI_ENV_ADD_CHECK(fcgi_env_add(p->fcgi_env, CONST_STR_LEN("SERVER_NAME"), s, strlen(s)),con) 1866 } 1867 1868 FCGI_ENV_ADD_CHECK(fcgi_env_add(p->fcgi_env, CONST_STR_LEN("GATEWAY_INTERFACE"), CONST_STR_LEN("CGI/1.1")),con) 1863 1869 1864 1870 LI_ltostr(buf, … … 1870 1876 ); 1871 1877 1872 fcgi_env_add(p->fcgi_env, CONST_STR_LEN("SERVER_PORT"), buf, strlen(buf));1878 FCGI_ENV_ADD_CHECK(fcgi_env_add(p->fcgi_env, CONST_STR_LEN("SERVER_PORT"), buf, strlen(buf)),con) 1873 1879 1874 1880 /* get the server-side of the connection to the client */ … … 1880 1886 s = inet_ntop_cache_get_ip(srv, &(our_addr)); 1881 1887 } 1882 fcgi_env_add(p->fcgi_env, CONST_STR_LEN("SERVER_ADDR"), s, strlen(s));1888 FCGI_ENV_ADD_CHECK(fcgi_env_add(p->fcgi_env, CONST_STR_LEN("SERVER_ADDR"), s, strlen(s)),con) 1883 1889 1884 1890 LI_ltostr(buf, … … 1890 1896 ); 1891 1897 1892 fcgi_env_add(p->fcgi_env, CONST_STR_LEN("REMOTE_PORT"), buf, strlen(buf));1898 FCGI_ENV_ADD_CHECK(fcgi_env_add(p->fcgi_env, CONST_STR_LEN("REMOTE_PORT"), buf, strlen(buf)),con) 1893 1899 1894 1900 s = inet_ntop_cache_get_ip(srv, &(con->dst_addr)); 1895 fcgi_env_add(p->fcgi_env, CONST_STR_LEN("REMOTE_ADDR"), s, strlen(s));1901 FCGI_ENV_ADD_CHECK(fcgi_env_add(p->fcgi_env, CONST_STR_LEN("REMOTE_ADDR"), s, strlen(s)),con) 1896 1902 1897 1903 if (!buffer_is_empty(con->authed_user)) { … … 1909 1915 data_string *ds; 1910 1916 1911 fcgi_env_add(p->fcgi_env, CONST_STR_LEN("REMOTE_USER"), CONST_BUF_LEN(con->authed_user));1917 FCGI_ENV_ADD_CHECK(fcgi_env_add(p->fcgi_env, CONST_STR_LEN("REMOTE_USER"), CONST_BUF_LEN(con->authed_user)),con) 1912 1918 1913 1919 if (NULL != (ds = (data_string *)array_get_element(con->request.headers, "Authorization"))) { … … 1933 1939 /* request.content_length < SSIZE_MAX, see request.c */ 1934 1940 LI_ltostr(buf, con->request.content_length); 1935 fcgi_env_add(p->fcgi_env, CONST_STR_LEN("CONTENT_LENGTH"), buf, strlen(buf));1941 FCGI_ENV_ADD_CHECK(fcgi_env_add(p->fcgi_env, CONST_STR_LEN("CONTENT_LENGTH"), buf, strlen(buf)),con) 1936 1942 } 1937 1943 … … 1944 1950 */ 1945 1951 1946 fcgi_env_add(p->fcgi_env, CONST_STR_LEN("SCRIPT_NAME"), CONST_BUF_LEN(con->uri.path));1952 FCGI_ENV_ADD_CHECK(fcgi_env_add(p->fcgi_env, CONST_STR_LEN("SCRIPT_NAME"), CONST_BUF_LEN(con->uri.path)),con) 1947 1953 1948 1954 if (!buffer_is_empty(con->request.pathinfo)) { 1949 fcgi_env_add(p->fcgi_env, CONST_STR_LEN("PATH_INFO"), CONST_BUF_LEN(con->request.pathinfo));1955 FCGI_ENV_ADD_CHECK(fcgi_env_add(p->fcgi_env, CONST_STR_LEN("PATH_INFO"), CONST_BUF_LEN(con->request.pathinfo)),con) 1950 1956 1951 1957 /* PATH_TRANSLATED is only defined if PATH_INFO is set */ … … 1957 1963 } 1958 1964 buffer_append_string_buffer(p->path, con->request.pathinfo); 1959 fcgi_env_add(p->fcgi_env, CONST_STR_LEN("PATH_TRANSLATED"), CONST_BUF_LEN(p->path));1965 FCGI_ENV_ADD_CHECK(fcgi_env_add(p->fcgi_env, CONST_STR_LEN("PATH_TRANSLATED"), CONST_BUF_LEN(p->path)),con) 1960 1966 } else { 1961 fcgi_env_add(p->fcgi_env, CONST_STR_LEN("PATH_INFO"), CONST_STR_LEN(""));1967 FCGI_ENV_ADD_CHECK(fcgi_env_add(p->fcgi_env, CONST_STR_LEN("PATH_INFO"), CONST_STR_LEN("")),con) 1962 1968 } 1963 1969 } … … 1980 1986 buffer_append_string_buffer(p->path, con->uri.path); 1981 1987 1982 fcgi_env_add(p->fcgi_env, CONST_STR_LEN("SCRIPT_FILENAME"), CONST_BUF_LEN(p->path));1983 fcgi_env_add(p->fcgi_env, CONST_STR_LEN("DOCUMENT_ROOT"), CONST_BUF_LEN(host->docroot));1988 FCGI_ENV_ADD_CHECK(fcgi_env_add(p->fcgi_env, CONST_STR_LEN("SCRIPT_FILENAME"), CONST_BUF_LEN(p->path)),con) 1989 FCGI_ENV_ADD_CHECK(fcgi_env_add(p->fcgi_env, CONST_STR_LEN("DOCUMENT_ROOT"), CONST_BUF_LEN(host->docroot)),con) 1984 1990 } else { 1985 1991 buffer_copy_string_buffer(p->path, con->physical.path); … … 1993 1999 } 1994 2000 1995 fcgi_env_add(p->fcgi_env, CONST_STR_LEN("SCRIPT_FILENAME"), CONST_BUF_LEN(p->path));1996 fcgi_env_add(p->fcgi_env, CONST_STR_LEN("DOCUMENT_ROOT"), CONST_BUF_LEN(con->physical.doc_root));2001 FCGI_ENV_ADD_CHECK(fcgi_env_add(p->fcgi_env, CONST_STR_LEN("SCRIPT_FILENAME"), CONST_BUF_LEN(p->path)),con) 2002 FCGI_ENV_ADD_CHECK(fcgi_env_add(p->fcgi_env, CONST_STR_LEN("DOCUMENT_ROOT"), CONST_BUF_LEN(con->physical.doc_root)),con) 1997 2003 } 1998 2004 … … 2020 2026 con->request.orig_uri->used - (host->strip_request_uri->used - 2)); 2021 2027 } else { 2022 fcgi_env_add(p->fcgi_env, CONST_STR_LEN("REQUEST_URI"), CONST_BUF_LEN(con->request.orig_uri));2028 FCGI_ENV_ADD_CHECK(fcgi_env_add(p->fcgi_env, CONST_STR_LEN("REQUEST_URI"), CONST_BUF_LEN(con->request.orig_uri)),con) 2023 2029 } 2024 2030 } else { 2025 fcgi_env_add(p->fcgi_env, CONST_STR_LEN("REQUEST_URI"), CONST_BUF_LEN(con->request.orig_uri));2031 FCGI_ENV_ADD_CHECK(fcgi_env_add(p->fcgi_env, CONST_STR_LEN("REQUEST_URI"), CONST_BUF_LEN(con->request.orig_uri)),con) 2026 2032 } 2027 2033 if (!buffer_is_equal(con->request.uri, con->request.orig_uri)) { 2028 fcgi_env_add(p->fcgi_env, CONST_STR_LEN("REDIRECT_URI"), CONST_BUF_LEN(con->request.uri));2034 FCGI_ENV_ADD_CHECK(fcgi_env_add(p->fcgi_env, CONST_STR_LEN("REDIRECT_URI"), CONST_BUF_LEN(con->request.uri)),con) 2029 2035 } 2030 2036 if (!buffer_is_empty(con->uri.query)) { 2031 fcgi_env_add(p->fcgi_env, CONST_STR_LEN("QUERY_STRING"), CONST_BUF_LEN(con->uri.query));2037 FCGI_ENV_ADD_CHECK(fcgi_env_add(p->fcgi_env, CONST_STR_LEN("QUERY_STRING"), CONST_BUF_LEN(con->uri.query)),con) 2032 2038 } else { 2033 fcgi_env_add(p->fcgi_env, CONST_STR_LEN("QUERY_STRING"), CONST_STR_LEN(""));2039 FCGI_ENV_ADD_CHECK(fcgi_env_add(p->fcgi_env, CONST_STR_LEN("QUERY_STRING"), CONST_STR_LEN("")),con) 2034 2040 } 2035 2041 2036 2042 s = get_http_method_name(con->request.http_method); 2037 fcgi_env_add(p->fcgi_env, CONST_STR_LEN("REQUEST_METHOD"), s, strlen(s));2038 fcgi_env_add(p->fcgi_env, CONST_STR_LEN("REDIRECT_STATUS"), CONST_STR_LEN("200"));/* if php is compiled with --force-redirect */2043 FCGI_ENV_ADD_CHECK(fcgi_env_add(p->fcgi_env, CONST_STR_LEN("REQUEST_METHOD"), s, strlen(s)),con) 2044 FCGI_ENV_ADD_CHECK(fcgi_env_add(p->fcgi_env, CONST_STR_LEN("REDIRECT_STATUS"), CONST_STR_LEN("200")),con) /* if php is compiled with --force-redirect */ 2039 2045 s = get_http_version_name(con->request.http_version); 2040 fcgi_env_add(p->fcgi_env, CONST_STR_LEN("SERVER_PROTOCOL"), s, strlen(s));2046 FCGI_ENV_ADD_CHECK(fcgi_env_add(p->fcgi_env, CONST_STR_LEN("SERVER_PROTOCOL"), s, strlen(s)),con) 2041 2047 2042 2048 #ifdef USE_OPENSSL 2043 2049 if (srv_sock->is_ssl) { 2044 fcgi_env_add(p->fcgi_env, CONST_STR_LEN("HTTPS"), CONST_STR_LEN("on"));2050 FCGI_ENV_ADD_CHECK(fcgi_env_add(p->fcgi_env, CONST_STR_LEN("HTTPS"), CONST_STR_LEN("on")),con) 2045 2051 } 2046 2052 #endif 2047 2053 2048 2054 2049 fcgi_env_add_request_headers(srv, con, p);2055 FCGI_ENV_ADD_CHECK(fcgi_env_add_request_headers(srv, con, p), con); 2050 2056 2051 2057 fcgi_header(&(header), FCGI_PARAMS, request_id, p->fcgi_env->used, 0); … … 2942 2948 2943 2949 /* fall through */ 2944 fcgi_create_env(srv, hctx, hctx->request_id); 2945 2950 if (-1 == fcgi_create_env(srv, hctx, hctx->request_id)) return HANDLER_ERROR; 2946 2951 fcgi_set_state(srv, hctx, FCGI_STATE_WRITE); 2947 2948 2952 /* fall through */ 2949 2953 case FCGI_STATE_WRITE: … … 3127 3131 buffer_reset(con->physical.path); 3128 3132 con->mode = DIRECT; 3129 con->http_status = 503;3133 if (con->http_status != 400) con->http_status = 503; 3130 3134 joblist_append(srv, con); /* really ? */ 3131 3135

