+ Added INI entries: http.log.not_found, http.send.not_found_404
[m6w6/ext-http] / http_api.c
index 22542083ee1e88b3a01bbbe46909ae644f1dc281..a8257faf5f1f3a2fc02e0f4ef189d998b112169e 100644 (file)
@@ -116,7 +116,7 @@ void _http_log_ex(char *file, const char *ident, const char *message TSRMLS_DC)
        struct tm nowtm;
        char datetime[20] = {0};
        
-       now = HTTP_GET_REQUEST_TIME();
+       now = HTTP_G->request.time;
        strftime(datetime, sizeof(datetime), "%Y-%m-%d %H:%M:%S", php_localtime_r(&now, &nowtm));
 
 #define HTTP_LOG_WRITE(file, type, msg) \
@@ -145,7 +145,7 @@ static void http_ob_blackhole(char *output, uint output_len, char **handled_outp
 STATUS _http_exit_ex(int status, char *header, char *body, zend_bool send_header TSRMLS_DC)
 {
        if (    (send_header && (SUCCESS != http_send_status_header(status, header))) ||
-                       (!send_header && status && (SUCCESS != http_send_status(status)))) {
+                       (status && (SUCCESS != http_send_status(status)))) {
                http_error_ex(HE_WARNING, HTTP_E_HEADER, "Failed to exit with status/header: %d - %s", status, header ? header : "");
                STR_FREE(header);
                STR_FREE(body);
@@ -166,6 +166,7 @@ STATUS _http_exit_ex(int status, char *header, char *body, zend_bool send_header
                case 305:       http_log(HTTP_G->log.redirect, "305-REDIRECT", header);                 break;
                case 307:       http_log(HTTP_G->log.redirect, "307-REDIRECT", header);                 break;
                case 304:       http_log(HTTP_G->log.cache, "304-CACHE", header);                               break;
+               case 404:       http_log(HTTP_G->log.not_found, "404-NOTFOUND", NULL);                  break;
                case 405:       http_log(HTTP_G->log.allowed_methods, "405-ALLOWED", header);   break;
                default:        http_log(NULL, header, body);                                                                   break;
        }
@@ -208,10 +209,10 @@ PHP_HTTP_API zval *_http_get_server_var_ex(const char *key, size_t key_size, zen
        if ((SUCCESS != zend_hash_find(&EG(symbol_table), "_SERVER", sizeof("_SERVER"), (void *) &hsv)) || (Z_TYPE_PP(hsv) != IS_ARRAY)) {
                return NULL;
        }
-       if ((SUCCESS != zend_hash_find(Z_ARRVAL_PP(hsv), (char *) key, key_size, (void *) &var)) || (Z_TYPE_PP(var) != IS_STRING)) {
+       if ((SUCCESS != zend_hash_find(Z_ARRVAL_PP(hsv), (char *) key, key_size, (void *) &var))) {
                return NULL;
        }
-       if (check && !(Z_STRVAL_PP(var) && Z_STRLEN_PP(var))) {
+       if (check && !((Z_TYPE_PP(var) == IS_STRING) && Z_STRVAL_PP(var) && Z_STRLEN_PP(var))) {
                return NULL;
        }
        return *var;