X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_methods.c;h=980245c6f3bca12fa4d0659d25368a16fe1ebf73;hp=4b2493586fba76569483524f74a6ed48956508c6;hb=7df1235b7cd60b2f0bd8154bc0985e042a110495;hpb=5030a6b1909ce10f584fb8223f6af8110de45cff diff --git a/http_methods.c b/http_methods.c index 4b24935..980245c 100644 --- a/http_methods.c +++ b/http_methods.c @@ -40,6 +40,8 @@ #ifdef ZEND_ENGINE_2 +#include "missing.h" + ZEND_EXTERN_MODULE_GLOBALS(http) /* {{{ HttpResponse */ @@ -505,7 +507,7 @@ PHP_METHOD(HttpResponse, getFile) } /* }}} */ -/* {{{ proto bool HttpResponse::send() +/* {{{ proto bool HttpResponse::send([bool clean_ob = true]) * * Finally send the entity. * @@ -522,14 +524,24 @@ PHP_METHOD(HttpResponse, getFile) */ PHP_METHOD(HttpResponse, send) { + zend_bool clean_ob = 1; zval *do_cache, *do_gzip; getObject(http_response_object, obj); - NO_ARGS; + if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|b", &clean_ob)) { + RETURN_FALSE; + } do_cache = GET_PROP(obj, cache); do_gzip = GET_PROP(obj, gzip); + if (clean_ob) { + /* interrupt on-the-fly etag generation */ + HTTP_G(etag).started = 0; + /* discard previous output buffers */ + php_end_ob_buffers(0 TSRMLS_CC); + } + /* gzip */ if (Z_LVAL_P(do_gzip)) { php_start_ob_buffer_named("ob_gzhandler", 0, 1 TSRMLS_CC); @@ -620,30 +632,6 @@ PHP_METHOD(HttpResponse, send) /* {{{ HttpMessage */ -/* {{{ proto static HttpMessage HttpMessage::fromString(string raw_message) - * - * Create an HttpMessage object from a string. - */ -PHP_METHOD(HttpMessage, fromString) -{ - char *string = NULL; - int length = 0; - http_message *msg = NULL; - http_message_object obj; - - if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &string, &length)) { - RETURN_NULL(); - } - - if (!(msg = http_message_parse(string, length))) { - RETURN_NULL(); - } - - Z_TYPE_P(return_value) = IS_OBJECT; - return_value->value.obj = http_message_object_from_msg(msg); -} -/* }}} */ - /* {{{ proto void HttpMessage::__construct([string message]) * * Instantiate a new HttpMessage object. @@ -668,6 +656,29 @@ PHP_METHOD(HttpMessage, __construct) } /* }}} */ +/* {{{ proto static HttpMessage HttpMessage::fromString(string raw_message) + * + * Create an HttpMessage object from a string. + */ +PHP_METHOD(HttpMessage, fromString) +{ + char *string = NULL; + int length = 0; + http_message *msg = NULL; + + if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &string, &length)) { + RETURN_NULL(); + } + + if (!(msg = http_message_parse(string, length))) { + RETURN_NULL(); + } + + Z_TYPE_P(return_value) = IS_OBJECT; + return_value->value.obj = http_message_object_from_msg(msg); +} +/* }}} */ + /* {{{ proto string HttpMessage::getBody() * * Get the body of the parsed Message. @@ -889,7 +900,6 @@ PHP_METHOD(HttpMessage, getRequestUri) NO_ARGS; IF_RETVAL_USED { - zval *uri; getObject(http_message_object, obj); if (!HTTP_MSG_TYPE(REQUEST, obj->message)) { @@ -972,7 +982,7 @@ PHP_METHOD(HttpMessage, getHttpVersion) PHP_METHOD(HttpMessage, setHttpVersion) { char v[4]; - zval *zv, *version; + zval *zv; getObject(http_message_object, obj); if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z/", &zv)) {