- more fixes for empty message info
authorMichael Wallner <mike@php.net>
Wed, 24 Jan 2007 11:08:09 +0000 (11:08 +0000)
committerMichael Wallner <mike@php.net>
Wed, 24 Jan 2007 11:08:09 +0000 (11:08 +0000)
- fixup tests

http_info_api.c
http_message_api.c
http_message_object.c
php_http_info_api.h
tests/HttpRequestPool_001.phpt
tests/HttpRequestPool_002.phpt
tests/HttpRequest_005.phpt

index 607dfab..5a92074 100644 (file)
@@ -107,7 +107,7 @@ PHP_HTTP_API STATUS _http_info_parse_ex(const char *pre_header, http_info *info,
                        while (' ' == *status) ++status;
                        HTTP_INFO(info).response.status = estrndup(status, end - status);
                } else {
-                       HTTP_INFO(info).response.status = ecalloc(1, 1);
+                       HTTP_INFO(info).response.status = NULL;
                }
                
                return SUCCESS;
@@ -129,8 +129,8 @@ PHP_HTTP_API STATUS _http_info_parse_ex(const char *pre_header, http_info *info,
                                return FAILURE;
                        }
                } else {
-                       HTTP_INFO(info).request.method = ecalloc(1, 1);
-                       HTTP_INFO(info).request.url = ecalloc(1, 1);
+                       HTTP_INFO(info).request.method = NULL;
+                       HTTP_INFO(info).request.url = NULL;
                }
                
                return SUCCESS;
index 87689da..096ee7c 100644 (file)
@@ -98,13 +98,9 @@ PHP_HTTP_API http_message *_http_message_init_env(http_message *message, http_me
                        }
                        if ((sval = http_get_server_var("REQUEST_METHOD", 1))) {
                                inf.http.info.request.method = estrdup(Z_STRVAL_P(sval));
-                       } else {
-                               inf.http.info.request.method = ecalloc(1, 1);
                        }
                        if ((sval = http_get_server_var("REQUEST_URI", 1))) {
                                inf.http.info.request.url = estrdup(Z_STRVAL_P(sval));
-                       } else {
-                               inf.http.info.request.url = ecalloc(1, 1);
                        }
                        
                        http_message_set_info(message, &inf);
@@ -170,17 +166,17 @@ PHP_HTTP_API void _http_message_set_type(http_message *message, http_message_typ
 
 PHP_HTTP_API void _http_message_set_info(http_message *message, http_info *info)
 {
-       message->http.version = info->http.version;
        http_message_set_type(message, info->type);
+       message->http.version = info->http.version;
        switch (message->type) {
                case IS_HTTP_REQUEST:
-                       HTTP_INFO(message).request.url = estrdup(HTTP_INFO(info).request.url);
-                       STR_SET(HTTP_INFO(message).request.method, estrdup(HTTP_INFO(info).request.method));
+                       STR_SET(HTTP_INFO(message).request.url, HTTP_INFO(info).request.url ? estrdup(HTTP_INFO(info).request.url) : NULL);
+                       STR_SET(HTTP_INFO(message).request.method, HTTP_INFO(info).request.method ? estrdup(HTTP_INFO(info).request.method) : NULL);
                        break;
                
                case IS_HTTP_RESPONSE:
                        HTTP_INFO(message).response.code = HTTP_INFO(info).response.code;
-                       STR_SET(HTTP_INFO(message).response.status, estrdup(HTTP_INFO(info).response.status));
+                       STR_SET(HTTP_INFO(message).response.status, HTTP_INFO(info).response.status ? estrdup(HTTP_INFO(info).response.status) : NULL);
                        break;
                
                default:
@@ -383,18 +379,11 @@ PHP_HTTP_API void _http_message_tostring(http_message *msg, char **string, size_
 
        switch (msg->type) {
                case HTTP_MSG_REQUEST:
-                       phpstr_appendf(&str, "%s %s HTTP/%1.1f" HTTP_CRLF,
-                               msg->http.info.request.method?msg->http.info.request.method:"UNKNOWN",
-                               msg->http.info.request.url?msg->http.info.request.url:"/",
-                               msg->http.version);
+                       phpstr_appendf(&str, HTTP_INFO_REQUEST_FMT_ARGS(&msg->http, HTTP_CRLF));
                        break;
 
                case HTTP_MSG_RESPONSE:
-                       phpstr_appendf(&str, "HTTP/%1.1f %d%s%s" HTTP_CRLF,
-                               msg->http.version,
-                               msg->http.info.response.code,
-                               msg->http.info.response.status&&*msg->http.info.response.status ? " ":"",
-                               STR_PTR(msg->http.info.response.status));
+                       phpstr_appendf(&str, HTTP_INFO_RESPONSE_FMT_ARGS(&msg->http, HTTP_CRLF));
                        break;
 
                case HTTP_MSG_NONE:
@@ -521,12 +510,12 @@ PHP_HTTP_API void _http_message_tostruct_recursive(http_message *msg, zval *obj
        {
                case HTTP_MSG_RESPONSE:
                        add_assoc_long(&strct, "responseCode", msg->http.info.response.code);
-                       add_assoc_string(&strct, "responseStatus", msg->http.info.response.status, 1);
+                       add_assoc_string(&strct, "responseStatus", STR_PTR(msg->http.info.response.status), 1);
                break;
                
                case HTTP_MSG_REQUEST:
-                       add_assoc_string(&strct, "requestMethod", msg->http.info.request.method, 1);
-                       add_assoc_string(&strct, "requestUrl", msg->http.info.request.url, 1);
+                       add_assoc_string(&strct, "requestMethod", STR_PTR(msg->http.info.request.method), 1);
+                       add_assoc_string(&strct, "requestUrl", STR_PTR(msg->http.info.request.url), 1);
                break;
                
                case HTTP_MSG_NONE:
index f1768b6..c3f05de 100644 (file)
@@ -909,10 +909,10 @@ PHP_METHOD(HttpMessage, getInfo)
                
                switch (obj->message->type) {
                        case HTTP_MSG_REQUEST:
-                               Z_STRLEN_P(return_value) = spprintf(&Z_STRVAL_P(return_value), 0, "%s %s HTTP/%0.1f", obj->message->http.info.request.method, obj->message->http.info.request.url, obj->message->http.version);
+                               Z_STRLEN_P(return_value) = spprintf(&Z_STRVAL_P(return_value), 0, HTTP_INFO_REQUEST_FMT_ARGS(&obj->message->http, ""));
                                break;
                        case HTTP_MSG_RESPONSE:
-                               Z_STRLEN_P(return_value) = spprintf(&Z_STRVAL_P(return_value), 0, "HTTP/%0.1f %d %s", obj->message->http.version, obj->message->http.info.response.code, obj->message->http.info.response.status);
+                               Z_STRLEN_P(return_value) = spprintf(&Z_STRVAL_P(return_value), 0, HTTP_INFO_RESPONSE_FMT_ARGS(&obj->message->http, ""));
                                break;
                        default:
                                RETURN_NULL();
index 94a8d31..4b6868e 100644 (file)
 
 #define HTTP_INFO(ptr) (ptr)->http.info
 
+#define HTTP_INFO_REQUEST_FMT_ARGS(_http_ptr, _EOL) "%s %s HTTP/%1.1f" _EOL, \
+                               (_http_ptr)->info.request.method?(_http_ptr)->info.request.method:"UNKNOWN", \
+                               (_http_ptr)->info.request.url?(_http_ptr)->info.request.url:"/", \
+                               (_http_ptr)->version>0.0?(_http_ptr)->version:1.1
+
+#define HTTP_INFO_RESPONSE_FMT_ARGS(_http_ptr, _EOL) "HTTP/%1.1f %d%s%s" _EOL, \
+                               (_http_ptr)->version>0.0?(_http_ptr)->version:1.1, \
+                               (_http_ptr)->info.response.code?(_http_ptr)->info.response.code:200, \
+                               (_http_ptr)->info.response.status&&*(_http_ptr)->info.response.status ? " ":"", \
+                               STR_PTR((_http_ptr)->info.response.status)
+
 typedef struct _http_request_info_t {
        char *method;
        char *url;
index b65bf75..1cfcfc8 100644 (file)
@@ -7,7 +7,6 @@ checkmin(5);
 checkcls('HttpRequestPool');
 checkurl('www.php.net');
 checkurl('de.php.net');
-checkurl('ch.php.net');
 checkurl('at.php.net');
 checkurl('dev.iworks.at');
 ?>
@@ -21,7 +20,6 @@ $pool = new HttpRequestPool(
     new HttpRequest('http://www.php.net/', HTTP_METH_HEAD),
     new HttpRequest('http://at.php.net/', HTTP_METH_HEAD),
     new HttpRequest('http://de.php.net/', HTTP_METH_HEAD),
-    new HttpRequest('http://ch.php.net/', HTTP_METH_HEAD),
     $post
 );
 
@@ -53,11 +51,9 @@ echo "Done\n";
 http://www.php.net/=200:200
 http://at.php.net/=200:200
 http://de.php.net/=200:200
-http://ch.php.net/=200:200
 http://dev.iworks.at/.print_request.php=200:200
 .
 .
 .
 .
-.
 Done
index a85e817..e15a756 100644 (file)
@@ -4,7 +4,6 @@ extending HttpRequestPool
 <?php
 include 'skip.inc';
 checkcls('HttpRequestPool');
-checkurl('ch.php.net');
 checkurl('at.php.net');
 checkurl('de.php.net');
 checkurl('www.php.net');
@@ -41,8 +40,7 @@ class MyPool extends HttpRequestPool
 $pool = new MyPool(
     new HttpRequest('http://www.php.net/', HTTP_METH_HEAD),
     new HttpRequest('http://at.php.net/', HTTP_METH_HEAD),
-    new HttpRequest('http://de.php.net/', HTTP_METH_HEAD),
-    new HttpRequest('http://ch.php.net/', HTTP_METH_HEAD)
+    new HttpRequest('http://de.php.net/', HTTP_METH_HEAD)
 );
 
 $pool->send();
@@ -51,5 +49,5 @@ echo "\nDone\n";
 ?>
 --EXPECTREGEX--
 .+TEST
-\.*=200=\.*=200=\.*=200=\.*=200=
+\.*=200=\.*=200=\.*=200=
 Done
index 7fc0dc5..8f9b7e4 100644 (file)
@@ -14,8 +14,6 @@ foreach (get_class_methods('HttpRequest') as $method) {
        try {
                if (strlen($method) > 3 && substr($method, 0, 3) == 'get')
                        $x = $r->$method();
-               else
-                       $x = $r->$method(null, null);
        } catch (HttpException $e) {
        }
 }