X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_message_api.c;h=6ac56ca37d618d9ea77a6554b84254898296bc4f;hp=88c89fc6cebae5192fea1dc14e6917daa7b55b8d;hb=df36ec0caf7186c3bcb55580601183a864579fa0;hpb=b23b4edaebd71ff76579b97f3ee353f43e83bd25 diff --git a/http_message_api.c b/http_message_api.c index 88c89fc..6ac56ca 100644 --- a/http_message_api.c +++ b/http_message_api.c @@ -91,20 +91,16 @@ PHP_HTTP_API http_message *_http_message_init_env(http_message *message, http_me memset(&inf, 0, sizeof(http_info)); switch (inf.type = type) { case HTTP_MSG_REQUEST: - if ((sval = http_get_server_var("SERVER_PROTOCOL", 1)) && !strncmp(Z_STRVAL_P(sval), ZEND_STRL("HTTP/"))) { + if ((sval = http_get_server_var("SERVER_PROTOCOL", 1)) && !strncmp(Z_STRVAL_P(sval), "HTTP/", lenof("HTTP/"))) { inf.http.version = atof(Z_STRVAL_P(sval) + lenof("HTTP/")); } else { inf.http.version = 1.1; } 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) { + http_message_set_type(message, info->type); message->http.version = info->http.version; - - switch (message->type = info->type) { + 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: