| modification, are permitted provided that the conditions mentioned |
| in the accompanying LICENSE file are met. |
+--------------------------------------------------------------------+
- | Copyright (c) 2004-2007, Michael Wallner <mike@php.net> |
+ | Copyright (c) 2004-2010, Michael Wallner <mike@php.net> |
+--------------------------------------------------------------------+
*/
HTTP_EMPTY_ARGS(getParentMessage);
HTTP_EMPTY_ARGS(send);
+HTTP_EMPTY_ARGS(__toString);
HTTP_BEGIN_ARGS(toString, 0)
HTTP_ARG_VAL(include_parent, 0)
HTTP_END_ARGS;
static zval *_http_message_object_read_prop(zval *object, zval *member, int type TSRMLS_DC);
#define http_message_object_write_prop _http_message_object_write_prop
static void _http_message_object_write_prop(zval *object, zval *member, zval *value TSRMLS_DC);
+#define http_message_object_get_prop_ptr _http_message_object_get_prop_ptr
+static zval **_http_message_object_get_prop_ptr(zval *object, zval *member TSRMLS_DC);
#define http_message_object_get_props _http_message_object_get_props
static HashTable *_http_message_object_get_props(zval *object TSRMLS_DC);
HTTP_MESSAGE_ME(key, ZEND_ACC_PUBLIC)
HTTP_MESSAGE_ME(next, ZEND_ACC_PUBLIC)
- ZEND_MALIAS(HttpMessage, __toString, toString, HTTP_ARGS(HttpMessage, toString), ZEND_ACC_PUBLIC)
+ ZEND_MALIAS(HttpMessage, __toString, toString, HTTP_ARGS(HttpMessage, __toString), ZEND_ACC_PUBLIC)
HTTP_MESSAGE_ME(factory, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
ZEND_MALIAS(HttpMessage, fromString, factory, HTTP_ARGS(HttpMessage, factory), ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
};
static zend_object_handlers http_message_object_handlers;
+static HashTable http_message_object_prophandlers;
+
+typedef void (*http_message_object_prophandler_func)(http_message_object *, zval *);
+
+typedef struct _http_message_object_prophandler {
+ http_message_object_prophandler_func read;
+ http_message_object_prophandler_func write;
+} http_message_object_prophandler;
+
+static STATUS http_message_object_add_prophandler(const char *prop_str, size_t prop_len, http_message_object_prophandler_func read, http_message_object_prophandler_func write) {
+ http_message_object_prophandler h = { read, write };
+ return zend_hash_add(&http_message_object_prophandlers, prop_str, prop_len, (void *) &h, sizeof(h), NULL);
+}
+static STATUS http_message_object_get_prophandler(const char *prop_str, size_t prop_len, http_message_object_prophandler **handler) {
+ return zend_hash_find(&http_message_object_prophandlers, prop_str, prop_len, (void *) handler);
+}
+static void http_message_object_prophandler_get_type(http_message_object *obj, zval *return_value) {
+ RETVAL_LONG(obj->message->type);
+}
+static void http_message_object_prophandler_set_type(http_message_object *obj, zval *value) {
+ zval *cpy = http_zsep(IS_LONG, value);
+ http_message_set_type(obj->message, Z_LVAL_P(cpy));
+ zval_ptr_dtor(&cpy);
+}
+static void http_message_object_prophandler_get_body(http_message_object *obj, zval *return_value) {
+ phpstr_fix(PHPSTR(obj->message));
+ RETVAL_PHPSTR(PHPSTR(obj->message), 0, 1);
+}
+static void http_message_object_prophandler_set_body(http_message_object *obj, zval *value) {
+ zval *cpy = http_zsep(IS_STRING, value);
+ phpstr_dtor(PHPSTR(obj->message));
+ phpstr_from_string_ex(PHPSTR(obj->message), Z_STRVAL_P(cpy), Z_STRLEN_P(cpy));
+ zval_ptr_dtor(&cpy);
+}
+static void http_message_object_prophandler_get_request_method(http_message_object *obj, zval *return_value) {
+ if (HTTP_MSG_TYPE(REQUEST, obj->message) && obj->message->http.info.request.method) {
+ RETVAL_STRING(obj->message->http.info.request.method, 1);
+ } else {
+ RETVAL_NULL();
+ }
+}
+static void http_message_object_prophandler_set_request_method(http_message_object *obj, zval *value) {
+ if (HTTP_MSG_TYPE(REQUEST, obj->message)) {
+ zval *cpy = http_zsep(IS_STRING, value);
+ STR_SET(obj->message->http.info.request.method, estrndup(Z_STRVAL_P(cpy), Z_STRLEN_P(cpy)));
+ zval_ptr_dtor(&cpy);
+ }
+}
+static void http_message_object_prophandler_get_request_url(http_message_object *obj, zval *return_value) {
+ if (HTTP_MSG_TYPE(REQUEST, obj->message) && obj->message->http.info.request.url) {
+ RETVAL_STRING(obj->message->http.info.request.url, 1);
+ } else {
+ RETVAL_NULL();
+ }
+}
+static void http_message_object_prophandler_set_request_url(http_message_object *obj, zval *value) {
+ if (HTTP_MSG_TYPE(REQUEST, obj->message)) {
+ zval *cpy = http_zsep(IS_STRING, value);
+ STR_SET(obj->message->http.info.request.url, estrndup(Z_STRVAL_P(cpy), Z_STRLEN_P(cpy)));
+ zval_ptr_dtor(&cpy);
+ }
+}
+static void http_message_object_prophandler_get_response_status(http_message_object *obj, zval *return_value) {
+ if (HTTP_MSG_TYPE(RESPONSE, obj->message) && obj->message->http.info.response.status) {
+ RETVAL_STRING(obj->message->http.info.response.status, 1);
+ } else {
+ RETVAL_NULL();
+ }
+}
+static void http_message_object_prophandler_set_response_status(http_message_object *obj, zval *value) {
+ if (HTTP_MSG_TYPE(RESPONSE, obj->message)) {
+ zval *cpy = http_zsep(IS_STRING, value);
+ STR_SET(obj->message->http.info.response.status, estrndup(Z_STRVAL_P(cpy), Z_STRLEN_P(cpy)));
+ zval_ptr_dtor(&cpy);
+ }
+}
+static void http_message_object_prophandler_get_response_code(http_message_object *obj, zval *return_value) {
+ if (HTTP_MSG_TYPE(RESPONSE, obj->message)) {
+ RETVAL_LONG(obj->message->http.info.response.code);
+ } else {
+ RETVAL_NULL();
+ }
+}
+static void http_message_object_prophandler_set_response_code(http_message_object *obj, zval *value) {
+ if (HTTP_MSG_TYPE(RESPONSE, obj->message)) {
+ zval *cpy = http_zsep(IS_LONG, value);
+ obj->message->http.info.response.code = Z_LVAL_P(cpy);
+ zval_ptr_dtor(&cpy);
+ }
+}
+static void http_message_object_prophandler_get_http_version(http_message_object *obj, zval *return_value) {
+ RETVAL_DOUBLE(obj->message->http.version);
+}
+static void http_message_object_prophandler_set_http_version(http_message_object *obj, zval *value) {
+ zval *cpy = http_zsep(IS_DOUBLE, value);
+ obj->message->http.version = Z_DVAL_P(cpy);
+ zval_ptr_dtor(&cpy);
+}
+static void http_message_object_prophandler_get_headers(http_message_object *obj, zval *return_value) {
+ array_init(return_value);
+ zend_hash_copy(Z_ARRVAL_P(return_value), &obj->message->hdrs, (copy_ctor_func_t) zval_add_ref, NULL, sizeof(zval *));
+}
+static void http_message_object_prophandler_set_headers(http_message_object *obj, zval *value) {
+ zval *cpy = http_zsep(IS_ARRAY, value);
+ zend_hash_clean(&obj->message->hdrs);
+ zend_hash_copy(&obj->message->hdrs, Z_ARRVAL_P(cpy), (copy_ctor_func_t) zval_add_ref, NULL, sizeof(zval *));
+ zval_ptr_dtor(&cpy);
+}
+static void http_message_object_prophandler_get_parent_message(http_message_object *obj, zval *return_value) {
+ if (obj->message->parent) {
+ RETVAL_OBJVAL(obj->parent, 1);
+ } else {
+ RETVAL_NULL();
+ }
+}
+static void http_message_object_prophandler_set_parent_message(http_message_object *obj, zval *value) {
+ if (Z_TYPE_P(value) == IS_OBJECT && instanceof_function(Z_OBJCE_P(value), http_message_object_ce TSRMLS_CC)) {
+ if (obj->message->parent) {
+ zval tmp;
+ tmp.value.obj = obj->parent;
+ Z_OBJ_DELREF(tmp);
+ }
+ Z_OBJ_ADDREF_P(value);
+ obj->parent = value->value.obj;
+ }
+}
+
PHP_MINIT_FUNCTION(http_message_object)
{
HTTP_REGISTER_CLASS_EX(HttpMessage, http_message_object, NULL, 0);
http_message_object_handlers.read_property = http_message_object_read_prop;
http_message_object_handlers.write_property = http_message_object_write_prop;
http_message_object_handlers.get_properties = http_message_object_get_props;
- http_message_object_handlers.get_property_ptr_ptr = NULL;
-
+ http_message_object_handlers.get_property_ptr_ptr = http_message_object_get_prop_ptr;
+
+ zend_hash_init(&http_message_object_prophandlers, 9, NULL, NULL, 1);
zend_declare_property_long(THIS_CE, ZEND_STRS("type")-1, HTTP_MSG_NONE, ZEND_ACC_PROTECTED TSRMLS_CC);
+ http_message_object_add_prophandler(ZEND_STRS("type")-1, http_message_object_prophandler_get_type, http_message_object_prophandler_set_type);
zend_declare_property_string(THIS_CE, ZEND_STRS("body")-1, "", ZEND_ACC_PROTECTED TSRMLS_CC);
+ http_message_object_add_prophandler(ZEND_STRS("body")-1, http_message_object_prophandler_get_body, http_message_object_prophandler_set_body);
zend_declare_property_string(THIS_CE, ZEND_STRS("requestMethod")-1, "", ZEND_ACC_PROTECTED TSRMLS_CC);
+ http_message_object_add_prophandler(ZEND_STRS("requestMethod")-1, http_message_object_prophandler_get_request_method, http_message_object_prophandler_set_request_method);
zend_declare_property_string(THIS_CE, ZEND_STRS("requestUrl")-1, "", ZEND_ACC_PROTECTED TSRMLS_CC);
+ http_message_object_add_prophandler(ZEND_STRS("requestUrl")-1, http_message_object_prophandler_get_request_url, http_message_object_prophandler_set_request_url);
zend_declare_property_string(THIS_CE, ZEND_STRS("responseStatus")-1, "", ZEND_ACC_PROTECTED TSRMLS_CC);
+ http_message_object_add_prophandler(ZEND_STRS("responseStatus")-1, http_message_object_prophandler_get_response_status, http_message_object_prophandler_set_response_status);
zend_declare_property_long(THIS_CE, ZEND_STRS("responseCode")-1, 0, ZEND_ACC_PROTECTED TSRMLS_CC);
+ http_message_object_add_prophandler(ZEND_STRS("responseCode")-1, http_message_object_prophandler_get_response_code, http_message_object_prophandler_set_response_code);
zend_declare_property_null(THIS_CE, ZEND_STRS("httpVersion")-1, ZEND_ACC_PROTECTED TSRMLS_CC);
+ http_message_object_add_prophandler(ZEND_STRS("httpVersion")-1, http_message_object_prophandler_get_http_version, http_message_object_prophandler_set_http_version);
zend_declare_property_null(THIS_CE, ZEND_STRS("headers")-1, ZEND_ACC_PROTECTED TSRMLS_CC);
+ http_message_object_add_prophandler(ZEND_STRS("headers")-1, http_message_object_prophandler_get_headers, http_message_object_prophandler_set_headers);
zend_declare_property_null(THIS_CE, ZEND_STRS("parentMessage")-1, ZEND_ACC_PROTECTED TSRMLS_CC);
+ http_message_object_add_prophandler(ZEND_STRS("parentMessage")-1, http_message_object_prophandler_get_parent_message, http_message_object_prophandler_set_parent_message);
#ifndef WONKY
zend_declare_class_constant_long(THIS_CE, ZEND_STRS("TYPE_NONE")-1, HTTP_MSG_NONE TSRMLS_CC);
return SUCCESS;
}
+PHP_MSHUTDOWN_FUNCTION(http_message_object)
+{
+ zend_hash_destroy(&http_message_object_prophandlers);
+
+ return SUCCESS;
+}
+
void _http_message_object_reverse(zval *this_ptr, zval *return_value TSRMLS_DC)
{
int i;
{
http_message_object *o = (http_message_object *) object;
+ if (o->iterator) {
+ zval_ptr_dtor(&o->iterator);
+ o->iterator = NULL;
+ }
if (o->message) {
http_message_dtor(o->message);
efree(o->message);
freeObject(o);
}
-static zval *_http_message_object_read_prop(zval *object, zval *member, int type TSRMLS_DC)
-{
+static zval **_http_message_object_get_prop_ptr(zval *object, zval *member TSRMLS_DC) {
getObjectEx(http_message_object, obj, object);
- http_message *msg = obj->message;
- zval *return_value;
-#ifdef WONKY
- ulong h = zend_hash_func(Z_STRVAL_P(member), Z_STRLEN_P(member)+1);
-#else
- zend_property_info *pinfo = zend_get_property_info(obj->zo.ce, member, 1 TSRMLS_CC);
+ http_message_object_prophandler *handler;
- if (!pinfo || ACC_PROP_PUBLIC(pinfo->flags)) {
- return zend_get_std_object_handlers()->read_property(object, member, type TSRMLS_CC);
- }
-#endif
-
- if (type == BP_VAR_W) {
+ if (SUCCESS == http_message_object_get_prophandler(Z_STRVAL_P(member), Z_STRLEN_P(member), &handler)) {
zend_error(E_ERROR, "Cannot access HttpMessage properties by reference or array key/index");
return NULL;
}
-
- ALLOC_ZVAL(return_value);
- return_value->refcount = 0;
- return_value->is_ref = 0;
-
-#ifdef WONKY
- switch (h)
-#else
- switch (pinfo->h)
-#endif
- {
- case HTTP_MSG_PROPHASH_TYPE:
- case HTTP_MSG_CHILD_PROPHASH_TYPE:
- RETVAL_LONG(msg->type);
- break;
-
- case HTTP_MSG_PROPHASH_HTTP_VERSION:
- case HTTP_MSG_CHILD_PROPHASH_HTTP_VERSION:
- RETVAL_DOUBLE(msg->http.version);
- break;
-
- case HTTP_MSG_PROPHASH_BODY:
- case HTTP_MSG_CHILD_PROPHASH_BODY:
- phpstr_fix(PHPSTR(msg));
- RETVAL_PHPSTR(PHPSTR(msg), 0, 1);
- break;
-
- case HTTP_MSG_PROPHASH_HEADERS:
- case HTTP_MSG_CHILD_PROPHASH_HEADERS:
- array_init(return_value);
- zend_hash_copy(Z_ARRVAL_P(return_value), &msg->hdrs, (copy_ctor_func_t) zval_add_ref, NULL, sizeof(zval *));
- break;
- case HTTP_MSG_PROPHASH_PARENT_MESSAGE:
- case HTTP_MSG_CHILD_PROPHASH_PARENT_MESSAGE:
- if (msg->parent) {
- RETVAL_OBJVAL(obj->parent, 1);
- } else {
- RETVAL_NULL();
- }
- break;
+ return zend_get_std_object_handlers()->get_property_ptr_ptr(object, member TSRMLS_CC);
+}
- case HTTP_MSG_PROPHASH_REQUEST_METHOD:
- case HTTP_MSG_CHILD_PROPHASH_REQUEST_METHOD:
- if (HTTP_MSG_TYPE(REQUEST, msg) && msg->http.info.request.method) {
- RETVAL_STRING(msg->http.info.request.method, 1);
- } else {
- RETVAL_NULL();
- }
- break;
+static zval *_http_message_object_read_prop(zval *object, zval *member, int type TSRMLS_DC)
+{
+ getObjectEx(http_message_object, obj, object);
+ http_message_object_prophandler *handler;
+ zval *return_value;
- case HTTP_MSG_PROPHASH_REQUEST_URL:
- case HTTP_MSG_CHILD_PROPHASH_REQUEST_URL:
- if (HTTP_MSG_TYPE(REQUEST, msg) && msg->http.info.request.url) {
- RETVAL_STRING(msg->http.info.request.url, 1);
- } else {
- RETVAL_NULL();
- }
- break;
+ if (SUCCESS == http_message_object_get_prophandler(Z_STRVAL_P(member), Z_STRLEN_P(member), &handler)) {
+ if (type == BP_VAR_W) {
+ zend_error(E_ERROR, "Cannot access HttpMessage properties by reference or array key/index");
+ return NULL;
+ }
- case HTTP_MSG_PROPHASH_RESPONSE_CODE:
- case HTTP_MSG_CHILD_PROPHASH_RESPONSE_CODE:
- if (HTTP_MSG_TYPE(RESPONSE, msg)) {
- RETVAL_LONG(msg->http.info.response.code);
- } else {
- RETVAL_NULL();
- }
- break;
-
- case HTTP_MSG_PROPHASH_RESPONSE_STATUS:
- case HTTP_MSG_CHILD_PROPHASH_RESPONSE_STATUS:
- if (HTTP_MSG_TYPE(RESPONSE, msg) && msg->http.info.response.status) {
- RETVAL_STRING(msg->http.info.response.status, 1);
- } else {
- RETVAL_NULL();
- }
- break;
-
- default:
-#ifdef WONKY
- return zend_get_std_object_handlers()->read_property(object, member, type TSRMLS_CC);
+ ALLOC_ZVAL(return_value);
+#ifdef Z_SET_REFCOUNT
+ Z_SET_REFCOUNT_P(return_value, 0);
+ Z_UNSET_ISREF_P(return_value);
#else
- RETVAL_NULL();
+ return_value->refcount = 0;
+ return_value->is_ref = 0;
#endif
- }
+ handler->read(obj, return_value);
+
+ } else {
+ return_value = zend_get_std_object_handlers()->read_property(object, member, type TSRMLS_CC);
+ }
+
return return_value;
}
static void _http_message_object_write_prop(zval *object, zval *member, zval *value TSRMLS_DC)
{
getObjectEx(http_message_object, obj, object);
- http_message *msg = obj->message;
- zval *cpy = NULL;
-#ifdef WONKY
- ulong h = zend_hash_func(Z_STRVAL_P(member), Z_STRLEN_P(member) + 1);
-#else
- zend_property_info *pinfo = zend_get_property_info(obj->zo.ce, member, 1 TSRMLS_CC);
+ http_message_object_prophandler *handler;
- if (!pinfo || ACC_PROP_PUBLIC(pinfo->flags)) {
+ if (SUCCESS == http_message_object_get_prophandler(Z_STRVAL_P(member), Z_STRLEN_P(member), &handler)) {
+ handler->write(obj, value);
+ } else {
zend_get_std_object_handlers()->write_property(object, member, value TSRMLS_CC);
- return;
- }
-#endif
-
- cpy = zval_copy(Z_TYPE_P(value), value);
-
-#ifdef WONKY
- switch (h)
-#else
- switch (pinfo->h)
-#endif
- {
- case HTTP_MSG_PROPHASH_TYPE:
- case HTTP_MSG_CHILD_PROPHASH_TYPE:
- convert_to_long(cpy);
- http_message_set_type(msg, Z_LVAL_P(cpy));
- break;
-
- case HTTP_MSG_PROPHASH_HTTP_VERSION:
- case HTTP_MSG_CHILD_PROPHASH_HTTP_VERSION:
- convert_to_double(cpy);
- msg->http.version = Z_DVAL_P(cpy);
- break;
-
- case HTTP_MSG_PROPHASH_BODY:
- case HTTP_MSG_CHILD_PROPHASH_BODY:
- convert_to_string(cpy);
- phpstr_dtor(PHPSTR(msg));
- phpstr_from_string_ex(PHPSTR(msg), Z_STRVAL_P(cpy), Z_STRLEN_P(cpy));
- break;
-
- case HTTP_MSG_PROPHASH_HEADERS:
- case HTTP_MSG_CHILD_PROPHASH_HEADERS:
- convert_to_array(cpy);
- zend_hash_clean(&msg->hdrs);
- zend_hash_copy(&msg->hdrs, Z_ARRVAL_P(cpy), (copy_ctor_func_t) zval_add_ref, NULL, sizeof(zval *));
- break;
-
- case HTTP_MSG_PROPHASH_PARENT_MESSAGE:
- case HTTP_MSG_CHILD_PROPHASH_PARENT_MESSAGE:
- if (Z_TYPE_P(value) == IS_OBJECT && instanceof_function(Z_OBJCE_P(value), http_message_object_ce TSRMLS_CC)) {
- if (msg->parent) {
- zval tmp;
- tmp.value.obj = obj->parent;
- Z_OBJ_DELREF(tmp);
- }
- Z_OBJ_ADDREF_P(value);
- obj->parent = value->value.obj;
- }
- break;
-
- case HTTP_MSG_PROPHASH_REQUEST_METHOD:
- case HTTP_MSG_CHILD_PROPHASH_REQUEST_METHOD:
- if (HTTP_MSG_TYPE(REQUEST, msg)) {
- convert_to_string(cpy);
- STR_SET(msg->http.info.request.method, estrndup(Z_STRVAL_P(cpy), Z_STRLEN_P(cpy)));
- }
- break;
-
- case HTTP_MSG_PROPHASH_REQUEST_URL:
- case HTTP_MSG_CHILD_PROPHASH_REQUEST_URL:
- if (HTTP_MSG_TYPE(REQUEST, msg)) {
- convert_to_string(cpy);
- STR_SET(msg->http.info.request.url, estrndup(Z_STRVAL_P(cpy), Z_STRLEN_P(cpy)));
- }
- break;
-
- case HTTP_MSG_PROPHASH_RESPONSE_CODE:
- case HTTP_MSG_CHILD_PROPHASH_RESPONSE_CODE:
- if (HTTP_MSG_TYPE(RESPONSE, msg)) {
- convert_to_long(cpy);
- msg->http.info.response.code = Z_LVAL_P(cpy);
- }
- break;
-
- case HTTP_MSG_PROPHASH_RESPONSE_STATUS:
- case HTTP_MSG_CHILD_PROPHASH_RESPONSE_STATUS:
- if (HTTP_MSG_TYPE(RESPONSE, msg)) {
- convert_to_string(cpy);
- STR_SET(msg->http.info.response.status, estrndup(Z_STRVAL_P(cpy), Z_STRLEN_P(cpy)));
- }
- break;
-
- default:
-#ifdef WONKY
- zend_get_std_object_handlers()->write_property(object, member, value TSRMLS_CC);
-#endif
- break;
}
- zval_free(&cpy);
}
static HashTable *_http_message_object_get_props(zval *object TSRMLS_DC)
if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &body, &len)) {
phpstr_dtor(PHPSTR(obj->message));
- phpstr_from_string_ex(PHPSTR(obj->message), body, len);
+ phpstr_from_string_ex(PHPSTR(obj->message), body, len);
}
}
/* }}} */
}
convert_to_double(zv);
- sprintf(v, "%1.1lf", Z_DVAL_P(zv));
+ snprintf(v, sizeof(v), "%1.1f", Z_DVAL_P(zv));
if (strcmp(v, "1.0") && strcmp(v, "1.1")) {
- http_error_ex(HE_WARNING, HTTP_E_INVALID_PARAM, "Invalid HTTP protocol version (1.0 or 1.1): %s", v);
+ http_error_ex(HE_WARNING, HTTP_E_INVALID_PARAM, "Invalid HTTP protocol version (1.0 or 1.1): %g", Z_DVAL_P(zv));
RETURN_FALSE;
}
zval_ptr_dtor(&array);
if (PHPSTR_VAL(obj->message) && PHPSTR_LEN(obj->message)) {
+ phpstr_fix(PHPSTR(obj->message));
INIT_PZVAL(&body);
ZVAL_STRINGL(&body, PHPSTR_VAL(obj->message), PHPSTR_LEN(obj->message), 0);
if (method != HTTP_POST) {
zval_copy_ctor(&body);
sapi_module.treat_data(PARSE_STRING, Z_STRVAL(body), &post TSRMLS_CC);
zend_call_method_with_1_params(&return_value, http_request_object_ce, NULL, "setpostfields", NULL, &post);
+ zval_dtor(&post);
}
}
#else
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);
+ http_error(HE_ERROR, HTTP_E_RUNTIME, "Could not unserialize HttpMessage");
}
}
}