if ( (!strncmp(header, "HTTP/1.", lenof("HTTP/1."))) ||
(!strncmp(line - lenof("HTTP/1.x\r") + value_len, "HTTP/1.", lenof("HTTP/1.")))) {
if (func) {
- func(callback_data, header, header - (line + 1), &headers TSRMLS_CC);
+ func(callback_data, header, line - header + value_len, &headers TSRMLS_CC);
Z_ARRVAL(array) = headers;
}
} else
-
+
/* "header: value" pair */
if (colon) {
/* skip empty key */
if (header != colon) {
zval **previous = NULL;
- char *value = empty_string;
+ char *value;
int keylen = colon - header;
char *key = estrndup(header, keylen);
if (value_len > 0) {
value = estrndup(colon, value_len);
} else {
+ value = estrdup("");
value_len = 0;
}
{
zval array;
Z_ARRVAL(array) = *headers;
-
+
/* response */
if (!strncmp(http_line, "HTTP/1.", lenof("HTTP/1."))) {
- add_assoc_stringl(&array, "Response Status", http_line + lenof("HTTP/1.x "), line_length - lenof("HTTP/1.x \r\n"), 0);
+ add_assoc_stringl(&array, "Response Status", http_line + lenof("HTTP/1.x "), line_length - lenof("HTTP/1.x \r\n"), 1);
} else
/* request */
if (!strncmp(http_line + line_length - lenof("HTTP/1.x\r\n"), "HTTP/1.", lenof("HTTP/1."))) {
char *sep = strchr(http_line, ' ');
-
+
add_assoc_stringl(&array, "Request Method", http_line, sep - http_line, 1);
add_assoc_stringl(&array, "Request Uri", sep + 1, strstr(sep, "HTTP/1.") - sep + 1 + 1, 1);
}