-PHP_HTTP_API http_message *_http_message_parse_ex(char *message, size_t message_length, zend_bool dup TSRMLS_DC)
+PHP_HTTP_API http_message *_http_message_parse_ex(http_message *msg, char *message, size_t message_length, zend_bool dup TSRMLS_DC)
msg->len = message_length;
msg->raw = dup ? estrndup(message, message_length) : message;
msg->len = message_length;
msg->raw = dup ? estrndup(message, message_length) : message;
if (SUCCESS != http_parse_headers_cb(message, header_length, &msg->hdrs, 1, http_message_parse_headers_callback, (void **) &msg)) {
if (SUCCESS != http_parse_headers_cb(message, header_length, &msg->hdrs, 1, http_message_parse_headers_callback, (void **) &msg)) {
// response
if (!strncmp(http_line, "HTTP/1.", lenof("HTTP/1."))) {
new->type = HTTP_MSG_RESPONSE;
new->info.response.http_version = atof(http_line + lenof("HTTP/"));
// response
if (!strncmp(http_line, "HTTP/1.", lenof("HTTP/1."))) {
new->type = HTTP_MSG_RESPONSE;
new->info.response.http_version = atof(http_line + lenof("HTTP/"));
case HTTP_MSG_RESPONSE:
phpstr_appendf(&str, "HTTP/%1.1f %d" HTTP_CRLF,
msg->info.response.http_version,
case HTTP_MSG_RESPONSE:
phpstr_appendf(&str, "HTTP/%1.1f %d" HTTP_CRLF,
msg->info.response.http_version,
case IS_STRING:
phpstr_appendf(&str, "%s: %s" HTTP_CRLF, key, Z_STRVAL_PP(header));
break;
case IS_STRING:
phpstr_appendf(&str, "%s: %s" HTTP_CRLF, key, Z_STRVAL_PP(header));
break;
case IS_ARRAY:
FOREACH_VAL(*header, single_header) {
phpstr_appendf(&str, "%s: %s" HTTP_CRLF, key, Z_STRVAL_PP(single_header));
}
break;
}
case IS_ARRAY:
FOREACH_VAL(*header, single_header) {
phpstr_appendf(&str, "%s: %s" HTTP_CRLF, key, Z_STRVAL_PP(single_header));
}
break;
}
}
if (message->type == HTTP_MSG_REQUEST) {
if (message->info.request.method) {
efree(message->info.request.method);
}
if (message->type == HTTP_MSG_REQUEST) {
if (message->info.request.method) {
efree(message->info.request.method);