- aliases for HttpUtil
[m6w6/ext-http] / http_response_object.c
index 2a0cbbd0aaad9db54ec57e4591e469abaf681171..544b60337198fd4841852d8b24e75caa9463d497 100644 (file)
@@ -248,6 +248,14 @@ static inline void _http_response_object_declare_default_properties(TSRMLS_D)
        DCL_CONST(long, "ETAG_SHA1", HTTP_ETAG_SHA1);
        DCL_CONST(long, "ETAG_CRC32", HTTP_ETAG_CRC32);
        
+#      ifdef HTTP_HAVE_HASH_EXT
+       DCL_CONST(long, "ETAG_SHA256", HTTP_ETAG_SHA256);
+       DCL_CONST(long, "ETAG_SHA384", HTTP_ETAG_SHA384);
+       DCL_CONST(long, "ETAG_SHA512", HTTP_ETAG_SHA512);
+       DCL_CONST(long, "ETAG_RIPEMD128", HTTP_ETAG_RIPEMD128);
+       DCL_CONST(long, "ETAG_RIPEMD160", HTTP_ETAG_RIPEMD160);
+#      endif
+
 #      ifdef HTTP_HAVE_MHASH
        {
                int l, i, c = mhash_count();
@@ -900,7 +908,7 @@ PHP_METHOD(HttpResponse, setData)
        }
        
        UPD_STATIC_PROP(long, lastModified, http_last_modified(the_data, SEND_DATA));
-       if (etag = http_etag(Z_STRVAL_P(the_data), Z_STRLEN_P(the_data), SEND_DATA)) {
+       if ((etag = http_etag(Z_STRVAL_P(the_data), Z_STRLEN_P(the_data), SEND_DATA))) {
                UPD_STATIC_PROP(string, eTag, etag);
                efree(etag);
        }
@@ -959,7 +967,7 @@ PHP_METHOD(HttpResponse, setStream)
        zend_list_addref(Z_LVAL_P(the_stream));
        
        UPD_STATIC_PROP(long, lastModified, http_last_modified(the_real_stream, SEND_RSRC));
-       if (etag = http_etag(the_real_stream, 0, SEND_RSRC)) {
+       if ((etag = http_etag(the_real_stream, 0, SEND_RSRC))) {
                UPD_STATIC_PROP(string, eTag, etag);
                efree(etag);
        }
@@ -1018,7 +1026,7 @@ PHP_METHOD(HttpResponse, setFile)
        }
 
        UPD_STATIC_PROP(long, lastModified, http_last_modified(the_file, -1));
-       if (etag = http_etag(the_file, 0, -1)) {
+       if ((etag = http_etag(the_file, 0, -1))) {
                UPD_STATIC_PROP(string, eTag, etag);
                efree(etag);
        }
@@ -1081,13 +1089,11 @@ PHP_METHOD(HttpResponse, send)
        if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|b", &clean_ob)) {
                RETURN_FALSE;
        }
-       if (SG(headers_sent)) {
-               http_error(HE_WARNING, HTTP_E_RESPONSE, "Cannot send HttpResponse, headers have already been sent");
-               RETURN_FALSE;
-       }
+       
+       HTTP_CHECK_HEADERS_SENT(RETURN_FALSE);
 
        sent = GET_STATIC_PROP(sent);
-       if (zval_is_true(sent)) {
+       if (Z_LVAL_P(sent)) {
                http_error(HE_WARNING, HTTP_E_RESPONSE, "Cannot send HttpResponse, response has already been sent");
                RETURN_FALSE;
        } else {
@@ -1140,6 +1146,10 @@ PHP_METHOD(HttpResponse, send)
                if (etag_p) zval_ptr_dtor(&etag_p);
                if (lmod_p) zval_ptr_dtor(&lmod_p);
                if (cctl_p) zval_ptr_dtor(&cctl_p);
+       
+               if (php_ob_handler_used("blackhole" TSRMLS_CC)) {
+                       RETURN_TRUE;
+               }
        }
 
        /* content type */
@@ -1238,6 +1248,8 @@ PHP_METHOD(HttpResponse, send)
 PHP_METHOD(HttpResponse, capture)
 {
        NO_ARGS;
+       
+       HTTP_CHECK_HEADERS_SENT(RETURN_FALSE);
 
        UPD_STATIC_PROP(long, catch, 1);