X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=http_message_object.c;h=fee935ededa29330dc0378e8f6b5112c3d97d52a;hb=30e2b03a47f16cf8dcfb900314db792ac88fa17e;hp=a8540e78c64bd9db836b1fd9bddbfcc38f7edb12;hpb=96b6d481cfa03fae8c40a6ab7c2156036b082d7d;p=m6w6%2Fext-http diff --git a/http_message_object.c b/http_message_object.c index a8540e7..fee935e 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,12 +318,14 @@ 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); } break; } + zval_dtor(value); + FREE_ZVAL(value); } static HashTable *_http_message_object_get_props(zval *object TSRMLS_DC)