- }
- return SUCCESS;
-}
-/* }}} */
-
-PHP_HTTP_API void _http_parse_headers_default_callback(const char *http_line, HashTable **headers, void **cb_data TSRMLS_DC)
-{
- zval array;
- char *crlf = NULL;
- size_t line_length;
- Z_ARRVAL(array) = *headers;
-
- if (crlf = strstr(http_line, HTTP_CRLF)) {
- line_length = crlf - http_line;
- } else {
- line_length = strlen(http_line);
- }
-
- /* response */
- if (!strncmp(http_line, "HTTP/1.", lenof("HTTP/1."))) {
- char *status = estrndup(http_line + lenof("HTTP/1.x "), line_length - lenof("HTTP/1.x "));
- add_assoc_stringl(&array, "Response Status", status, line_length - lenof("HTTP/1.x "), 0);
- } else
- /* request */
- if (!strncmp(http_line + line_length - lenof("HTTP/1.x"), "HTTP/1.", lenof("HTTP/1."))) {
- char *sep = strchr(http_line, ' ');
- char *url = estrndup(sep + 1, strstr(sep, "HTTP/1.") - sep + 1 + 1);
- char *met = estrndup(http_line, sep - http_line);
-
- add_assoc_stringl(&array, "Request Method", met, sep - http_line, 0);
- add_assoc_stringl(&array, "Request Uri", url, strstr(sep, "HTTP/1.") - sep + 1 + 1, 0);
- }
-}
-
-/* {{{ */
-PHP_HTTP_API STATUS _http_parse_cookie(const char *cookie, HashTable *values TSRMLS_DC)
-{
- const char *key = cookie, *val = NULL;
- int vallen = 0, keylen = 0, done = 0;
- zval array;
-
- Z_ARRVAL(array) = values;
-
- if (!(val = strchr(cookie, '='))) {
- return FAILURE;
- }
-
-#define HTTP_COOKIE_VAL(array, k, str, len) \
- { \
- const char *encoded = str; \
- char *decoded = NULL; \
- int decoded_len = 0, encoded_len = len; \
- decoded = estrndup(encoded, encoded_len); \
- decoded_len = php_url_decode(decoded, encoded_len); \
- add_assoc_stringl(array, k, decoded, decoded_len, 0); \
- }
-#define HTTP_COOKIE_FIXKEY() \
- { \
- while (isspace(*key)) ++key; \
- keylen = val - key; \
- while (isspace(key[keylen - 1])) --keylen; \
- }
-#define HTTP_COOKIE_FIXVAL() \
- { \
- ++val; \
- while (isspace(*val)) ++val; \
- vallen = key - val; \
- while (isspace(val[vallen - 1])) --vallen; \
- }
-
- HTTP_COOKIE_FIXKEY();
- HTTP_COOKIE_VAL(&array, "name", key, keylen);
-
- /* just a name=value cookie */
- if (!(key = strchr(val, ';'))) {
- key = val + strlen(val);
- HTTP_COOKIE_FIXVAL();
- HTTP_COOKIE_VAL(&array, "value", val, vallen);
- }
- /* additional info appended */
- else {
- char *keydup = NULL;