- if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s", &message, &length) && message && length) {
- php_http_message_t *msg = obj->message;
-
- php_http_message_dtor(msg);
- with_error_handling(EH_THROW, php_http_exception_class_entry) {
- if ((obj->message = php_http_message_parse(msg, message, length TSRMLS_CC))) {
- if (obj->message->parent) {
- obj->parent = php_http_message_object_new_ex(Z_OBJCE_P(getThis()), obj->message->parent, NULL TSRMLS_CC);
- }
- } else {
- obj->message = php_http_message_init(msg, 0 TSRMLS_CC);
+ if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|z!", &zmessage) && zmessage) {
+ if (Z_TYPE_P(zmessage) == IS_RESOURCE) {
+ php_stream *s;
+ php_http_message_parser_t p;
+
+ php_stream_from_zval(s, &zmessage);
+ if (s && php_http_message_parser_init(&p TSRMLS_CC)) {
+ php_http_message_parser_parse_stream(&p, s, &msg);
+ php_http_message_parser_dtor(&p);