X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=http_message_object.c;h=e2dbb563de8c62fabb30587d62b6733fa4a83195;hb=refs%2Ftags%2FRELEASE_1_4_1;hp=3adbb273e76c523c3ce869aa1ac31ab0293718b8;hpb=b3afcfc70bf06c062115f4994cc04fc8c6e4aa67;p=m6w6%2Fext-http diff --git a/http_message_object.c b/http_message_object.c index 3adbb27..e2dbb56 100644 --- a/http_message_object.c +++ b/http_message_object.c @@ -886,8 +886,8 @@ PHP_METHOD(HttpMessage, setResponseCode) if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &code)) { RETURN_FALSE; } - if (code < 100 || code > 510) { - http_error_ex(HE_WARNING, HTTP_E_INVALID_PARAM, "Invalid response code (100-510): %ld", code); + if (code < 100 || code > 599) { + http_error_ex(HE_WARNING, HTTP_E_INVALID_PARAM, "Invalid response code (100-599): %ld", code); RETURN_FALSE; } @@ -905,7 +905,11 @@ PHP_METHOD(HttpMessage, getResponseStatus) if (return_value_used) { getObject(http_message_object, obj); HTTP_CHECK_MESSAGE_TYPE_RESPONSE(obj->message, RETURN_FALSE); - RETURN_STRING(obj->message->http.info.response.status, 1); + if (obj->message->http.info.response.status) { + RETURN_STRING(obj->message->http.info.response.status, 1); + } else { + RETURN_EMPTY_STRING(); + } } } /* }}} */ @@ -923,7 +927,7 @@ PHP_METHOD(HttpMessage, setResponseStatus) if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &status, &status_len)) { RETURN_FALSE; } - STR_SET(obj->message->http.info.response.status, estrdup(status)); + STR_SET(obj->message->http.info.response.status, estrndup(status, status_len)); RETURN_TRUE; } /* }}} */ @@ -937,7 +941,11 @@ PHP_METHOD(HttpMessage, getRequestMethod) if (return_value_used) { getObject(http_message_object, obj); HTTP_CHECK_MESSAGE_TYPE_REQUEST(obj->message, RETURN_FALSE); - RETURN_STRING(obj->message->http.info.request.method, 1); + if (obj->message->http.info.request.method) { + RETURN_STRING(obj->message->http.info.request.method, 1); + } else { + RETURN_EMPTY_STRING(); + } } } /* }}} */ @@ -978,7 +986,11 @@ PHP_METHOD(HttpMessage, getRequestUrl) if (return_value_used) { getObject(http_message_object, obj); HTTP_CHECK_MESSAGE_TYPE_REQUEST(obj->message, RETURN_FALSE); - RETURN_STRING(obj->message->http.info.request.url, 1); + if (obj->message->http.info.request.url) { + RETURN_STRING(obj->message->http.info.request.url, 1); + } else { + RETURN_EMPTY_STRING(); + } } } /* }}} */ @@ -1278,8 +1290,12 @@ PHP_METHOD(HttpMessage, unserialize) getObject(http_message_object, obj); if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &serialized, &length)) { + http_message *msg; + http_message_dtor(obj->message); - if (!http_message_parse_ex(obj->message, serialized, (size_t) length)) { + if ((msg = http_message_parse_ex(obj->message, serialized, (size_t) length))) { + obj->message = msg; + } else { http_error(HE_ERROR, HTTP_E_RUNTIME, "Could not unserialize HttpMessage"); http_message_init(obj->message); }