X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_response_object.c;h=ba1ae4073ef9991f805aacd681735f8d12fadbbc;hp=9ef4fc93f32773be4ad76c87e59605398f33084c;hb=bb1f32fd5d06b9b9ace6517c177b0fe58c9ff57c;hpb=3fa63677501feaa721b31715a2abe000e54415be diff --git a/http_response_object.c b/http_response_object.c index 9ef4fc9..ba1ae40 100644 --- a/http_response_object.c +++ b/http_response_object.c @@ -38,6 +38,10 @@ #include "php_http_cache_api.h" #include "php_http_headers_api.h" +#ifdef HTTP_HAVE_MHASH +# include +#endif + ZEND_EXTERN_MODULE_GLOBALS(http); #define GET_STATIC_PROP(n) *GET_STATIC_PROP_EX(http_response_object_ce, n) @@ -232,11 +236,33 @@ static inline void _http_response_object_declare_default_properties(TSRMLS_D) DCL_STATIC_PROP_N(PROTECTED, contentDisposition); DCL_STATIC_PROP(PROTECTED, long, bufferSize, HTTP_SENDBUF_SIZE); DCL_STATIC_PROP(PROTECTED, double, throttleDelay, 0.0); + +#ifndef WONKY + DCL_CONST(long, "ETAG_MD5", HTTP_ETAG_MD5); + DCL_CONST(long, "ETAG_SHA1", HTTP_ETAG_SHA1); + +# ifdef HTTP_HAVE_MHASH + { + int l, i, c = mhash_count(); + + for (i = 0; i < c; ++i) { + char const_name[256] = {0}; + const char *hash_name = mhash_get_hash_name_static(i); + + if (hash_name) { + l = snprintf(const_name, 255, "ETAG_MHASH_%s", hash_name); + zend_declare_class_constant_long(ce, const_name, l, i TSRMLS_CC); + } + } + } +# endif /* HTTP_HAVE_MHASH */ +#endif /* WONKY */ } static void _http_grab_response_headers(void *data, void *arg TSRMLS_DC) { - phpstr_appendf(PHPSTR(arg), "%s\r\n", ((sapi_header_struct *)data)->header); + phpstr_appendl(PHPSTR(arg), ((sapi_header_struct *)data)->header); + phpstr_appends(PHPSTR(arg), HTTP_CRLF); } /* ### USERLAND ### */ @@ -476,7 +502,6 @@ PHP_METHOD(HttpResponse, getContentType) /* {{{ proto static string HttpResponse::guessContentType(string magic_file[, long magic_mode]) * * Attempts to guess the content type of supplied payload through libmagic. - * See docs/KnownIssues.txt! */ PHP_METHOD(HttpResponse, guessContentType) { @@ -857,7 +882,7 @@ PHP_METHOD(HttpResponse, getFile) */ PHP_METHOD(HttpResponse, send) { - zval *sent, *headers; + zval *sent; zend_bool clean_ob = 1; if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|b", &clean_ob)) { @@ -997,14 +1022,9 @@ PHP_METHOD(HttpResponse, send) */ PHP_METHOD(HttpResponse, capture) { - zval do_catch; - NO_ARGS; - INIT_PZVAL(&do_catch); - ZVAL_LONG(&do_catch, 1); - - SET_STATIC_PROP(catch, &do_catch); + UPD_STATIC_PROP(long, catch, 1); php_end_ob_buffers(0 TSRMLS_CC); php_start_ob_buffer(NULL, 0, 0 TSRMLS_CC);