-
- 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_BOOL:
- php_http_buffer_appendf(str, "%s: %s" PHP_HTTP_CRLF, key.str, Z_BVAL_PP(header)?"true":"false");
- break;
-
- case IS_LONG:
- php_http_buffer_appendf(str, "%s: %ld" PHP_HTTP_CRLF, key.str, Z_LVAL_PP(header));
- break;
-
- case IS_DOUBLE:
- php_http_buffer_appendf(str, "%s: %F" PHP_HTTP_CRLF, key.str, Z_DVAL_PP(header));
- break;
-
- case IS_STRING:
- if (Z_STRVAL_PP(header)[Z_STRLEN_PP(header)-1] == '\r') fprintf(stderr, "DOH!\n");
- php_http_buffer_appendf(str, "%s: %s" PHP_HTTP_CRLF, key.str, Z_STRVAL_PP(header));
- break;
-
- case IS_ARRAY:
- FOREACH_VAL(pos2, *header, single_header) {
- switch (Z_TYPE_PP(single_header)) {
- case IS_BOOL:
- php_http_buffer_appendf(str, "%s: %s" PHP_HTTP_CRLF, key.str, Z_BVAL_PP(single_header)?"true":"false");
- break;
-
- case IS_LONG:
- php_http_buffer_appendf(str, "%s: %ld" PHP_HTTP_CRLF, key.str, Z_LVAL_PP(single_header));
- break;
-
- case IS_DOUBLE:
- php_http_buffer_appendf(str, "%s: %F" PHP_HTTP_CRLF, key.str, Z_DVAL_PP(single_header));
- break;
-
- case IS_STRING:
- php_http_buffer_appendf(str, "%s: %s" PHP_HTTP_CRLF, key.str, Z_STRVAL_PP(single_header));
- break;
- }
- }
- break;
- }
- }
- }