X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_url_api.c;h=bdda91161088340f01a72cf38738f41eae50d5db;hp=cac64ec81ee880812cb10e186169363b50252855;hb=e37040ebf8a470c77c7ae3498ee582ca20db259c;hpb=5b969e9665308562361cb01c0f63a2793f81f0ef diff --git a/http_url_api.c b/http_url_api.c index cac64ec..bdda911 100644 --- a/http_url_api.c +++ b/http_url_api.c @@ -66,16 +66,22 @@ PHP_MINIT_FUNCTION(http_url) PHP_HTTP_API char *_http_absolute_url(const char *url TSRMLS_DC) { - char *abs = estrdup(url); - php_url *purl = php_url_parse(abs); + char *abs = NULL; + php_url *purl = NULL; - STR_SET(abs, NULL); + if (url) { + purl = php_url_parse(abs = estrdup(url)); + STR_SET(abs, NULL); + if (!purl) { + http_error_ex(HE_WARNING, HTTP_E_URL, "Could not parse URL (%s)", url); + return NULL; + } + } + + http_build_url(0, purl, NULL, NULL, &abs, NULL); if (purl) { - http_build_url(0, purl, NULL, NULL, &abs, NULL); php_url_free(purl); - } else { - http_error_ex(HE_WARNING, HTTP_E_URL, "Could not parse URL (%s)", url); } return abs; @@ -385,14 +391,14 @@ PHP_HTTP_API STATUS _http_urlencode_hash_recursive(HashTable *ht, phpstr *str, c phpstr_init(&new_prefix); if (prefix && prefix_len) { phpstr_append(&new_prefix, prefix, prefix_len); - phpstr_appends(&new_prefix, "["); + phpstr_appends(&new_prefix, "%5B"); } phpstr_append(&new_prefix, encoded_key, encoded_len); efree(encoded_key); if (prefix && prefix_len) { - phpstr_appends(&new_prefix, "]"); + phpstr_appends(&new_prefix, "%5D"); } phpstr_fix(&new_prefix); }