- add clean_ob parameter to HttpResponse::send()
authorMichael Wallner <mike@php.net>
Mon, 30 May 2005 15:26:35 +0000 (15:26 +0000)
committerMichael Wallner <mike@php.net>
Mon, 30 May 2005 15:26:35 +0000 (15:26 +0000)
http_methods.c

index 322836e53685c5fd8334cca47d47df8ce3bc491d..980245c6f3bca12fa4d0659d25368a16fe1ebf73 100644 (file)
@@ -507,7 +507,7 @@ PHP_METHOD(HttpResponse, getFile)
 }
 /* }}} */
 
-/* {{{ proto bool HttpResponse::send()
+/* {{{ proto bool HttpResponse::send([bool clean_ob = true])
  *
  * Finally send the entity.
  *
@@ -524,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);
@@ -622,29 +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;
-
-       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.
@@ -669,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.