X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=http_message_object.c;h=0f72351450fd6d494ef83effaa2942134a3e5a97;hb=a83c92bb0a8620394c3f164bafbfbc79d3a71a64;hp=a8540e78c64bd9db836b1fd9bddbfcc38f7edb12;hpb=96b6d481cfa03fae8c40a6ab7c2156036b082d7d;p=m6w6%2Fext-http diff --git a/http_message_object.c b/http_message_object.c index a8540e7..0f72351 100644 --- a/http_message_object.c +++ b/http_message_object.c @@ -43,11 +43,18 @@ zend_function_entry http_message_object_fe[] = { PHP_ME(HttpMessage, setRaw, NULL, ZEND_ACC_PUBLIC) PHP_ME(HttpMessage, getBody, NULL, ZEND_ACC_PUBLIC) PHP_ME(HttpMessage, getHeaders, NULL, ZEND_ACC_PUBLIC) + PHP_ME(HttpMessage, setHeaders, NULL, ZEND_ACC_PUBLIC) + PHP_ME(HttpMessage, addHeaders, NULL, ZEND_ACC_PUBLIC) PHP_ME(HttpMessage, getType, NULL, ZEND_ACC_PUBLIC) + PHP_ME(HttpMessage, setType, NULL, ZEND_ACC_PUBLIC) PHP_ME(HttpMessage, getResponseCode, NULL, ZEND_ACC_PUBLIC) + PHP_ME(HttpMessage, setResponseCode, NULL, ZEND_ACC_PUBLIC) PHP_ME(HttpMessage, getRequestMethod, NULL, ZEND_ACC_PUBLIC) + PHP_ME(HttpMessage, setRequestMethod, NULL, ZEND_ACC_PUBLIC) PHP_ME(HttpMessage, getRequestUri, NULL, ZEND_ACC_PUBLIC) + PHP_ME(HttpMessage, setRequestUri, NULL, ZEND_ACC_PUBLIC) PHP_ME(HttpMessage, getHttpVersion, NULL, ZEND_ACC_PUBLIC) + PHP_ME(HttpMessage, setHttpVersion, NULL, ZEND_ACC_PUBLIC) PHP_ME(HttpMessage, toString, NULL, ZEND_ACC_PUBLIC) ZEND_MALIAS(HttpMessage, __toString, toString, NULL, ZEND_ACC_PUBLIC) @@ -244,7 +251,22 @@ static void _http_message_object_write_prop(zval *object, zval *member, zval *va switch (zend_get_hash_value(Z_STRVAL_P(member), strlen(Z_STRVAL_P(member)) + 1)) { case HTTP_MSG_PROPHASH_TYPE: - msg->type = Z_LVAL_P(value); + if (Z_LVAL_P(value) != msg->type) { + if (msg->type == HTTP_MSG_REQUEST) { + if (msg->info.request.method) { + efree(msg->info.request.method); + } + if (msg->info.request.URI) { + efree(msg->info.request.URI); + } + } + msg->type = Z_LVAL_P(value); + if (msg->type == HTTP_MSG_REQUEST) { + msg->info.request.method = NULL; + msg->info.request.URI = NULL; + } + } + break; case HTTP_MSG_PROPHASH_HTTP_VERSION: @@ -296,7 +318,7 @@ static void _http_message_object_write_prop(zval *object, zval *member, zval *va } break; - case HTTP_MSG_PROPHASH_RESPONSE_STATUS: + case HTTP_MSG_PROPHASH_RESPONSE_CODE: if (msg->type == HTTP_MSG_RESPONSE) { msg->info.response.code = Z_LVAL_P(value); }