X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=http_message_api.c;h=e85774fbb1c7d25a191554180b5bea75a9aefbb5;hb=7764426522a9a36cb285e70a27672e874734db82;hp=096ee7c7fcefd746d22874433a9049e232efd256;hpb=2d01dadb270b6f83e7e6ecb596f99c06b68b2ae0;p=m6w6%2Fext-http diff --git a/http_message_api.c b/http_message_api.c index 096ee7c..e85774f 100644 --- a/http_message_api.c +++ b/http_message_api.c @@ -6,7 +6,7 @@ | modification, are permitted provided that the conditions mentioned | | in the accompanying LICENSE file are met. | +--------------------------------------------------------------------+ - | Copyright (c) 2004-2006, Michael Wallner | + | Copyright (c) 2004-2007, Michael Wallner | +--------------------------------------------------------------------+ */ @@ -91,8 +91,8 @@ 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/"))) { - inf.http.version = atof(Z_STRVAL_P(sval) + lenof("HTTP/")); + if ((sval = http_get_server_var("SERVER_PROTOCOL", 1)) && !strncmp(Z_STRVAL_P(sval), "HTTP/", lenof("HTTP/"))) { + inf.http.version = zend_strtod(Z_STRVAL_P(sval) + lenof("HTTP/"), NULL); } else { inf.http.version = 1.1; } @@ -397,13 +397,41 @@ PHP_HTTP_API void _http_message_tostring(http_message *msg, char **string, size_ zval **single_header; switch (Z_TYPE_PP(header)) { + case IS_BOOL: + phpstr_appendf(&str, "%s: %s" HTTP_CRLF, key.str, Z_BVAL_PP(header)?"true":"false"); + break; + + case IS_LONG: + phpstr_appendf(&str, "%s: %ld" HTTP_CRLF, key.str, Z_LVAL_PP(header)); + break; + + case IS_DOUBLE: + phpstr_appendf(&str, "%s: %f" HTTP_CRLF, key.str, Z_DVAL_PP(header)); + break; + case IS_STRING: phpstr_appendf(&str, "%s: %s" HTTP_CRLF, key.str, Z_STRVAL_PP(header)); break; case IS_ARRAY: FOREACH_VAL(pos2, *header, single_header) { - phpstr_appendf(&str, "%s: %s" HTTP_CRLF, key.str, Z_STRVAL_PP(single_header)); + switch (Z_TYPE_PP(single_header)) { + case IS_BOOL: + phpstr_appendf(&str, "%s: %s" HTTP_CRLF, key.str, Z_BVAL_PP(single_header)?"true":"false"); + break; + + case IS_LONG: + phpstr_appendf(&str, "%s: %ld" HTTP_CRLF, key.str, Z_LVAL_PP(single_header)); + break; + + case IS_DOUBLE: + phpstr_appendf(&str, "%s: %f" HTTP_CRLF, key.str, Z_DVAL_PP(single_header)); + break; + + case IS_STRING: + phpstr_appendf(&str, "%s: %s" HTTP_CRLF, key.str, Z_STRVAL_PP(single_header)); + break; + } } break; }