projects
/
m6w6
/
ext-http
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
- better inline docs, part #4
[m6w6/ext-http]
/
http_response_object.c
diff --git
a/http_response_object.c
b/http_response_object.c
index f2c5e5730d13a262b5967385f5dc937b259640c1..366cf9dddff0de8c0455707a062186bdd516145c 100644
(file)
--- a/
http_response_object.c
+++ b/
http_response_object.c
@@
-41,6
+41,9
@@
#ifdef HTTP_HAVE_MHASH
# include <mhash.h>
#endif
#ifdef HTTP_HAVE_MHASH
# include <mhash.h>
#endif
+#ifdef HTTP_HAVE_MAGIC
+# include <magic.h>
+#endif
ZEND_EXTERN_MODULE_GLOBALS(http);
ZEND_EXTERN_MODULE_GLOBALS(http);
@@
-237,14
+240,21
@@
static inline void _http_response_object_declare_default_properties(TSRMLS_D)
DCL_STATIC_PROP(PROTECTED, long, bufferSize, HTTP_SENDBUF_SIZE);
DCL_STATIC_PROP(PROTECTED, double, throttleDelay, 0.0);
DCL_STATIC_PROP(PROTECTED, long, bufferSize, HTTP_SENDBUF_SIZE);
DCL_STATIC_PROP(PROTECTED, double, throttleDelay, 0.0);
+#ifndef WONKY
+ DCL_CONST(long, "REDIRECT", HTTP_REDIRECT);
+ DCL_CONST(long, "REDIRECT_PERM", HTTP_REDIRECT_PERM);
+ DCL_CONST(long, "REDIRECT_POST", HTTP_REDIRECT_POST);
+ DCL_CONST(long, "REDIRECT_TEMP", HTTP_REDIRECT_TEMP);
+
DCL_CONST(long, "ETAG_MD5", HTTP_ETAG_MD5);
DCL_CONST(long, "ETAG_SHA1", HTTP_ETAG_SHA1);
DCL_CONST(long, "ETAG_MD5", HTTP_ETAG_MD5);
DCL_CONST(long, "ETAG_SHA1", HTTP_ETAG_SHA1);
+ DCL_CONST(long, "ETAG_CRC32", HTTP_ETAG_CRC32);
-#ifdef HTTP_HAVE_MHASH
+#
ifdef HTTP_HAVE_MHASH
{
int l, i, c = mhash_count();
{
int l, i, c = mhash_count();
- for (i = 0; i < c; ++i) {
+ for (i = 0; i <
=
c; ++i) {
char const_name[256] = {0};
const char *hash_name = mhash_get_hash_name_static(i);
char const_name[256] = {0};
const char *hash_name = mhash_get_hash_name_static(i);
@@
-254,7
+264,8
@@
static inline void _http_response_object_declare_default_properties(TSRMLS_D)
}
}
}
}
}
}
-#endif
+# endif /* HTTP_HAVE_MHASH */
+#endif /* WONKY */
}
static void _http_grab_response_headers(void *data, void *arg TSRMLS_DC)
}
static void _http_grab_response_headers(void *data, void *arg TSRMLS_DC)
@@
-497,7
+508,7
@@
PHP_METHOD(HttpResponse, getContentType)
}
/* }}} */
}
/* }}} */
-/* {{{ proto static string HttpResponse::guessContentType(string magic_file[, long magic_mode])
+/* {{{ proto static string HttpResponse::guessContentType(string magic_file[, long magic_mode
= MAGIC_MIME
])
*
* Attempts to guess the content type of supplied payload through libmagic.
*/
*
* Attempts to guess the content type of supplied payload through libmagic.
*/
@@
-509,6
+520,9
@@
PHP_METHOD(HttpResponse, guessContentType)
RETVAL_NULL();
RETVAL_NULL();
+#ifdef HTTP_HAVE_MAGIC
+ magic_mode = MAGIC_MIME;
+
SET_EH_THROW_HTTP();
if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l", &magic_file, &magic_file_len, &magic_mode)) {
switch (Z_LVAL_P(GET_STATIC_PROP(mode))) {
SET_EH_THROW_HTTP();
if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l", &magic_file, &magic_file_len, &magic_mode)) {
switch (Z_LVAL_P(GET_STATIC_PROP(mode))) {
@@
-539,6
+553,9
@@
PHP_METHOD(HttpResponse, guessContentType)
}
}
SET_EH_NORMAL();
}
}
SET_EH_NORMAL();
+#else
+ http_error(HE_THROW, HTTP_E_RUNTIME, "Cannot guess Content-Type; libmagic not available");
+#endif
}
/* }}} */
}
/* }}} */
@@
-880,7
+897,7
@@
PHP_METHOD(HttpResponse, getFile)
*/
PHP_METHOD(HttpResponse, send)
{
*/
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)) {
zend_bool clean_ob = 1;
if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|b", &clean_ob)) {
@@
-927,13
+944,6
@@
PHP_METHOD(HttpResponse, send)
php_end_ob_buffers(0 TSRMLS_CC);
}
php_end_ob_buffers(0 TSRMLS_CC);
}
- /* gzip */
- if (zval_is_true(GET_STATIC_PROP(gzip))) {
- php_start_ob_buffer_named("ob_gzhandler", 0, 0 TSRMLS_CC);
- } else {
- php_start_ob_buffer(NULL, 0, 0 TSRMLS_CC);
- }
-
/* caching */
if (zval_is_true(GET_STATIC_PROP(cache))) {
zval *cctl, *etag, *lmod;
/* caching */
if (zval_is_true(GET_STATIC_PROP(cache))) {
zval *cctl, *etag, *lmod;
@@
-977,29
+987,34
@@
PHP_METHOD(HttpResponse, send)
HTTP_G(send).throttle_delay = Z_DVAL_P(convert_to_type_ex(IS_DOUBLE, GET_STATIC_PROP(throttleDelay)));
}
HTTP_G(send).throttle_delay = Z_DVAL_P(convert_to_type_ex(IS_DOUBLE, GET_STATIC_PROP(throttleDelay)));
}
+ /* gzip */
+ if (zval_is_true(GET_STATIC_PROP(gzip))) {
+ php_start_ob_buffer_named("ob_gzhandler", HTTP_G(send).buffer_size, 0 TSRMLS_CC);
+ } else {
+ php_start_ob_buffer(NULL, HTTP_G(send).buffer_size, 0 TSRMLS_CC);
+ }
+
/* send */
/* send */
+ switch (Z_LVAL_P(GET_STATIC_PROP(mode)))
{
{
- switch (Z_LVAL_P(GET_STATIC_PROP(mode)))
+ case SEND_DATA:
{
{
- case SEND_DATA:
- {
- zval *zdata = convert_to_type_ex(IS_STRING, GET_STATIC_PROP(data));
- RETURN_SUCCESS(http_send_data_ex(Z_STRVAL_P(zdata), Z_STRLEN_P(zdata), 1));
- }
+ zval *zdata = convert_to_type_ex(IS_STRING, GET_STATIC_PROP(data));
+ RETURN_SUCCESS(http_send_data_ex(Z_STRVAL_P(zdata), Z_STRLEN_P(zdata), 1));
+ }
-
case SEND_RSRC:
-
{
-
php_stream *the_real_stream;
-
zval *the_stream = convert_to_type_ex(IS_LONG, GET_STATIC_PROP(stream));
-
the_stream->type = IS_RESOURCE;
-
php_stream_from_zval(the_real_stream, &the_stream);
-
RETURN_SUCCESS(http_send_stream_ex(the_real_stream, 0, 1));
-
}
+ case SEND_RSRC:
+ {
+ php_stream *the_real_stream;
+ zval *the_stream = convert_to_type_ex(IS_LONG, GET_STATIC_PROP(stream));
+ the_stream->type = IS_RESOURCE;
+ php_stream_from_zval(the_real_stream, &the_stream);
+ RETURN_SUCCESS(http_send_stream_ex(the_real_stream, 0, 1));
+ }
- default:
- {
- RETURN_SUCCESS(http_send_file_ex(Z_STRVAL_P(convert_to_type_ex(IS_STRING, GET_STATIC_PROP(file))), 1));
- }
+ default:
+ {
+ RETURN_SUCCESS(http_send_file_ex(Z_STRVAL_P(convert_to_type_ex(IS_STRING, GET_STATIC_PROP(file))), 1));
}
}
}
}
}
}
@@
-1020,17
+1035,12
@@
PHP_METHOD(HttpResponse, send)
*/
PHP_METHOD(HttpResponse, capture)
{
*/
PHP_METHOD(HttpResponse, capture)
{
- zval do_catch;
-
NO_ARGS;
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_end_ob_buffers(0 TSRMLS_CC);
- php_start_ob_buffer(NULL, 0, 0 TSRMLS_CC);
+ php_start_ob_buffer(NULL,
4096
0, 0 TSRMLS_CC);
/* register shutdown function */
{
/* register shutdown function */
{