X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_message_api.c;h=fdb0812bf480110edbe593dfdff6b3c102e579a5;hp=0cd1e8bdac76f3bca7304af833fce2ea645b487d;hb=86508dbae5f9296485820e654f07af59be55003f;hpb=cc85d45513bc32669f3ed26601f80ce7d27eb3a1 diff --git a/http_message_api.c b/http_message_api.c index 0cd1e8b..fdb0812 100644 --- a/http_message_api.c +++ b/http_message_api.c @@ -175,7 +175,7 @@ PHP_HTTP_API http_message *_http_message_parse_ex(http_message *msg, const char /* message has content-length header */ if (c = http_message_header(msg, "Content-Length")) { - unsigned long len = strtoul(Z_STRVAL_P(c), NULL, 10); + ulong len = strtoul(Z_STRVAL_P(c), NULL, 10); if (len > remaining) { http_error_ex(HE_NOTICE, HTTP_E_MALFORMED_HEADERS, "The Content-Length header pretends a larger body than actually received (expected %lu bytes; got %lu bytes)", len, remaining); len = remaining; @@ -204,7 +204,7 @@ PHP_HTTP_API http_message *_http_message_parse_ex(http_message *msg, const char } if (end >= start && (!total || end < total)) { phpstr_from_string_ex(PHPSTR(msg), body, len); - continue_at = body + (end + 1 - start); + continue_at = body + len; } } } @@ -259,7 +259,7 @@ PHP_HTTP_API http_message *_http_message_parse_ex(http_message *msg, const char # endif /* HTTP_HAVE_ZLIB */ } - if (decoded && decoded_len) { + if (decoded) { zval *len; char *tmp; int tmp_len; @@ -305,6 +305,7 @@ PHP_HTTP_API void _http_message_tostring(http_message *msg, char **string, size_ char *key, *data; ulong idx; zval **header; + HashPosition pos1; phpstr_init_ex(&str, 4096, 0); @@ -330,7 +331,7 @@ PHP_HTTP_API void _http_message_tostring(http_message *msg, char **string, size_ break; } - FOREACH_HASH_KEYVAL(&msg->hdrs, key, idx, header) { + FOREACH_HASH_KEYVAL(pos1, &msg->hdrs, key, idx, header) { if (key) { zval **single_header; @@ -341,9 +342,12 @@ PHP_HTTP_API void _http_message_tostring(http_message *msg, char **string, size_ break; case IS_ARRAY: - FOREACH_VAL(*header, single_header) { + { + HashPosition pos2; + FOREACH_VAL(pos2, *header, single_header) { phpstr_appendf(&str, "%s: %s" HTTP_CRLF, key, Z_STRVAL_PP(single_header)); } + } break; } @@ -443,14 +447,16 @@ PHP_HTTP_API STATUS _http_message_send(http_message *message TSRMLS_DC) char *key; ulong idx; zval **val; + HashPosition pos1; - FOREACH_HASH_KEYVAL(&message->hdrs, key, idx, val) { + FOREACH_HASH_KEYVAL(pos1, &message->hdrs, key, idx, val) { if (key) { if (Z_TYPE_PP(val) == IS_ARRAY) { zend_bool first = 1; zval **data; + HashPosition pos2; - FOREACH_VAL(*val, data) { + FOREACH_VAL(pos2, *val, data) { http_send_header_ex(key, strlen(key), Z_STRVAL_PP(data), Z_STRLEN_PP(data), first, NULL); first = 0; }