projects
/
m6w6
/
ext-http
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
This commit was manufactured by cvs2svn to create tag 'RELEASE_1_4_1'.
[m6w6/ext-http]
/
http_message_api.c
diff --git
a/http_message_api.c
b/http_message_api.c
index 4da4e88e517b498dc56c82e573ccf4e0f467cb8f..4f1ac7fb3641b61d53db8339cca84d37b4c826f3 100644
(file)
--- a/
http_message_api.c
+++ b/
http_message_api.c
@@
-104,17
+104,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)
{
PHP_HTTP_API void _http_message_set_info(http_message *message, http_info *info)
{
+ http_message_set_type(message, info->type);
message->http.version = info->http.version;
message->http.version = info->http.version;
-
- switch (message->type = info->type) {
+ switch (message->type) {
case IS_HTTP_REQUEST:
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;
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:
break;
default:
@@
-308,27
+308,20
@@
PHP_HTTP_API http_message *_http_message_parse_ex(http_message *msg, const char
PHP_HTTP_API void _http_message_tostring(http_message *msg, char **string, size_t *length)
{
phpstr str;
PHP_HTTP_API void _http_message_tostring(http_message *msg, char **string, size_t *length)
{
phpstr str;
- char *key, *data;
- ulong idx;
+ HashKey key = initHashKey(0);
zval **header;
zval **header;
+ char *data;
HashPosition pos1;
phpstr_init_ex(&str, 4096, 0);
switch (msg->type) {
case HTTP_MSG_REQUEST:
HashPosition pos1;
phpstr_init_ex(&str, 4096, 0);
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:
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:
break;
case HTTP_MSG_NONE:
@@
-336,24
+329,22
@@
PHP_HTTP_API void _http_message_tostring(http_message *msg, char **string, size_
break;
}
break;
}
- FOREACH_HASH_KEYVAL(pos1, &msg->hdrs, key,
idx,
header) {
- if (key) {
+ FOREACH_HASH_KEYVAL(pos1, &msg->hdrs, key, header) {
+ if (key
.type == HASH_KEY_IS_STRING
) {
HashPosition pos2;
zval **single_header;
switch (Z_TYPE_PP(header)) {
case IS_STRING:
HashPosition pos2;
zval **single_header;
switch (Z_TYPE_PP(header)) {
case IS_STRING:
- phpstr_appendf(&str, "%s: %s" HTTP_CRLF, key, Z_STRVAL_PP(header));
+ phpstr_appendf(&str, "%s: %s" HTTP_CRLF, key
.str
, Z_STRVAL_PP(header));
break;
case IS_ARRAY:
FOREACH_VAL(pos2, *header, single_header) {
break;
case IS_ARRAY:
FOREACH_VAL(pos2, *header, single_header) {
- phpstr_appendf(&str, "%s: %s" HTTP_CRLF, key, Z_STRVAL_PP(single_header));
+ phpstr_appendf(&str, "%s: %s" HTTP_CRLF, key
.str
, Z_STRVAL_PP(single_header));
}
break;
}
}
break;
}
-
- key = NULL;
}
}
}
}
@@
-457,12
+448,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);
{
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:
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:
break;
case HTTP_MSG_NONE:
@@
-500,16
+491,13
@@
PHP_HTTP_API STATUS _http_message_send(http_message *message TSRMLS_DC)
switch (message->type) {
case HTTP_MSG_RESPONSE:
{
switch (message->type) {
case HTTP_MSG_RESPONSE:
{
- char *key;
- uint len;
- ulong idx;
+ HashKey key = initHashKey(0);
zval **val;
HashPosition pos;
zval **val;
HashPosition pos;
- FOREACH_HASH_KEYLENVAL(pos, &message->hdrs, key, len, idx, val) {
- if (key) {
- http_send_header_zval_ex(key, len-1, val, 1);
- key = NULL;
+ FOREACH_HASH_KEYVAL(pos, &message->hdrs, key, val) {
+ if (key.type == HASH_KEY_IS_STRING) {
+ http_send_header_zval_ex(key.str, key.len-1, val, 1);
}
}
rs = SUCCESS == http_send_status(message->http.info.response.code) &&
}
}
rs = SUCCESS == http_send_status(message->http.info.response.code) &&