X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_message_api.c;h=e85774fbb1c7d25a191554180b5bea75a9aefbb5;hp=6ac56ca37d618d9ea77a6554b84254898296bc4f;hb=ea0d9948275e4e369633c53c59340db3d3df34d3;hpb=a0c54cae89e6c61a7f76037aa891898e6bd86e15 diff --git a/http_message_api.c b/http_message_api.c index 6ac56ca..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 | +--------------------------------------------------------------------+ */ @@ -92,7 +92,7 @@ PHP_HTTP_API http_message *_http_message_init_env(http_message *message, http_me switch (inf.type = type) { case HTTP_MSG_REQUEST: if ((sval = http_get_server_var("SERVER_PROTOCOL", 1)) && !strncmp(Z_STRVAL_P(sval), "HTTP/", lenof("HTTP/"))) { - inf.http.version = atof(Z_STRVAL_P(sval) + 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; }