- if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s", &message, &length) && message && length) {
- if (message && length) {
- php_http_message_t *msg = php_http_message_parse(NULL, message, length 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);
+ }
+ } else {
+ zmessage = php_http_ztyp(IS_STRING, zmessage);
+ msg = php_http_message_parse(NULL, Z_STRVAL_P(zmessage), Z_STRLEN_P(zmessage) TSRMLS_CC);
+ zval_ptr_dtor(&zmessage);
+ }