X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=php_http_info.c;h=f0fe7ad72bcc703b4e259a240498e72a4985e5af;hb=e22fc5f78e8cfc1101c4548de0568add46a8694a;hp=dca784fd513090b3ac7a328805cbe6d123c6454d;hpb=87db9817d428282792c8146d9c2ae9748ebf6f1e;p=m6w6%2Fext-http diff --git a/php_http_info.c b/php_http_info.c index dca784f..f0fe7ad 100644 --- a/php_http_info.c +++ b/php_http_info.c @@ -6,13 +6,13 @@ | modification, are permitted provided that the conditions mentioned | | in the accompanying LICENSE file are met. | +--------------------------------------------------------------------+ - | Copyright (c) 2004-2013, Michael Wallner | + | Copyright (c) 2004-2014, Michael Wallner | +--------------------------------------------------------------------+ */ #include "php_http_api.h" -php_http_info_t *php_http_info_init(php_http_info_t *i TSRMLS_DC) +php_http_info_t *php_http_info_init(php_http_info_t *i) { if (!i) { i = emalloc(sizeof(*i)); @@ -27,12 +27,12 @@ void php_http_info_dtor(php_http_info_t *i) { switch (i->type) { case PHP_HTTP_REQUEST: - STR_SET(PHP_HTTP_INFO(i).request.method, NULL); - STR_SET(PHP_HTTP_INFO(i).request.url, NULL); + PTR_SET(PHP_HTTP_INFO(i).request.method, NULL); + PTR_SET(PHP_HTTP_INFO(i).request.url, NULL); break; case PHP_HTTP_RESPONSE: - STR_SET(PHP_HTTP_INFO(i).response.status, NULL); + PTR_SET(PHP_HTTP_INFO(i).response.status, NULL); break; default: @@ -49,7 +49,7 @@ void php_http_info_free(php_http_info_t **i) } } -php_http_info_t *php_http_info_parse(php_http_info_t *info, const char *pre_header TSRMLS_DC) +php_http_info_t *php_http_info_parse(php_http_info_t *info, const char *pre_header) { const char *end, *http; zend_bool free_info = !info; @@ -72,7 +72,7 @@ php_http_info_t *php_http_info_parse(php_http_info_t *info, const char *pre_head info = php_http_info_init(info TSRMLS_CC); /* and nothing than SPACE or NUL after HTTP/1.x */ - if (!php_http_version_parse(&info->http.version, http TSRMLS_CC) + if (!php_http_version_parse(&info->http.version, http) || (http[lenof("HTTP/1.1")] && (!PHP_HTTP_IS_CTYPE(space, http[lenof("HTTP/1.1")])))) { if (free_info) { php_http_info_free(&info); @@ -120,9 +120,9 @@ php_http_info_t *php_http_info_parse(php_http_info_t *info, const char *pre_head while (' ' == *url) ++url; while (' ' == *(http-1)) --http; if (http > url) { - PHP_HTTP_INFO(info).request.url = estrndup(url, http - url); + PHP_HTTP_INFO(info).request.url = php_http_url_parse(url, http - url, ~0); } else { - STR_SET(PHP_HTTP_INFO(info).request.method, NULL); + PTR_SET(PHP_HTTP_INFO(info).request.method, NULL); return NULL; } } else {