From 2d01dadb270b6f83e7e6ecb596f99c06b68b2ae0 Mon Sep 17 00:00:00 2001 From: Michael Wallner Date: Wed, 24 Jan 2007 11:08:09 +0000 Subject: [PATCH] - more fixes for empty message info - fixup tests --- http_info_api.c | 6 +++--- http_message_api.c | 29 +++++++++-------------------- http_message_object.c | 4 ++-- php_http_info_api.h | 11 +++++++++++ tests/HttpRequestPool_001.phpt | 4 ---- tests/HttpRequestPool_002.phpt | 6 ++---- tests/HttpRequest_005.phpt | 2 -- 7 files changed, 27 insertions(+), 35 deletions(-) diff --git a/http_info_api.c b/http_info_api.c index 607dfab..5a92074 100644 --- a/http_info_api.c +++ b/http_info_api.c @@ -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; diff --git a/http_message_api.c b/http_message_api.c index 87689da..096ee7c 100644 --- a/http_message_api.c +++ b/http_message_api.c @@ -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: diff --git a/http_message_object.c b/http_message_object.c index f1768b6..c3f05de 100644 --- a/http_message_object.c +++ b/http_message_object.c @@ -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(); diff --git a/php_http_info_api.h b/php_http_info_api.h index 94a8d31..4b6868e 100644 --- a/php_http_info_api.h +++ b/php_http_info_api.h @@ -20,6 +20,17 @@ #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; diff --git a/tests/HttpRequestPool_001.phpt b/tests/HttpRequestPool_001.phpt index b65bf75..1cfcfc8 100644 --- a/tests/HttpRequestPool_001.phpt +++ b/tests/HttpRequestPool_001.phpt @@ -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 diff --git a/tests/HttpRequestPool_002.phpt b/tests/HttpRequestPool_002.phpt index a85e817..e15a756 100644 --- a/tests/HttpRequestPool_002.phpt +++ b/tests/HttpRequestPool_002.phpt @@ -4,7 +4,6 @@ extending HttpRequestPool send(); @@ -51,5 +49,5 @@ echo "\nDone\n"; ?> --EXPECTREGEX-- .+TEST -\.*=200=\.*=200=\.*=200=\.*=200= +\.*=200=\.*=200=\.*=200= Done diff --git a/tests/HttpRequest_005.phpt b/tests/HttpRequest_005.phpt index 7fc0dc5..8f9b7e4 100644 --- a/tests/HttpRequest_005.phpt +++ b/tests/HttpRequest_005.phpt @@ -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) { } } -- 2.30.2