X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_message_object.c;h=fee935ededa29330dc0378e8f6b5112c3d97d52a;hp=e23f555861a1c6a70100d66e0cfb729372f0ba43;hb=2b7331c5fdb73cb48f7f60a8e4ec88766581ced3;hpb=bf7c808caf569c8533a1e7226765cff87c462ab7 diff --git a/http_message_object.c b/http_message_object.c index e23f555..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: @@ -302,6 +324,8 @@ static void _http_message_object_write_prop(zval *object, zval *member, zval *va } break; } + zval_dtor(value); + FREE_ZVAL(value); } static HashTable *_http_message_object_get_props(zval *object TSRMLS_DC)