| modification, are permitted provided that the conditions mentioned |
| in the accompanying LICENSE file are met. |
+--------------------------------------------------------------------+
- | Copyright (c) 2004-2007, Michael Wallner <mike@php.net> |
+ | Copyright (c) 2004-2010, Michael Wallner <mike@php.net> |
+--------------------------------------------------------------------+
*/
NO_ARGS;
if (return_value_used) {
- zval *cache_p, *cache = convert_to_type_ex(IS_BOOL, *zend_std_get_static_property(THIS_CE, ZEND_STRS("cache")-1, 0 TSRMLS_CC), &cache_p);
-
- RETVAL_ZVAL(cache, 1, 0);
-
- if (cache_p) {
- zval_ptr_dtor(&cache_p);
- }
+ zval *cache = http_zsep(IS_BOOL, *(zend_std_get_static_property(THIS_CE, ZEND_STRS("cache")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC)));
+ RETVAL_ZVAL(cache, 1, 1);
}
}
/* }}}*/
NO_ARGS;
if (return_value_used) {
- zval *gzip_p, *gzip = convert_to_type_ex(IS_BOOL, *zend_std_get_static_property(THIS_CE, ZEND_STRS("gzip")-1, 0 TSRMLS_CC), &gzip_p);
-
- RETVAL_ZVAL(gzip, 1, 0);
-
- if (gzip_p) {
- zval_ptr_dtor(&gzip_p);
- }
+ zval *gzip = http_zsep(IS_BOOL, *(zend_std_get_static_property(THIS_CE, ZEND_STRS("gzip")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC)));
+ RETVAL_ZVAL(gzip, 1, 1);
}
}
/* }}} */
NO_ARGS;
if (return_value_used) {
- zval *ccontrol_p, *ccontrol = convert_to_type_ex(IS_STRING, *zend_std_get_static_property(THIS_CE, ZEND_STRS("cacheControl")-1, 0 TSRMLS_CC), &ccontrol_p);
-
- RETVAL_ZVAL(ccontrol, 1, 0);
-
- if (ccontrol_p) {
- zval_ptr_dtor(&ccontrol_p);
- }
+ zval *cctl = http_zsep(IS_STRING, *(zend_std_get_static_property(THIS_CE, ZEND_STRS("cacheControl")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC)));
+ RETVAL_ZVAL(cctl, 1, 1);
}
}
/* }}} */
NO_ARGS;
if (return_value_used) {
- zval *ctype_p, *ctype = convert_to_type_ex(IS_STRING, *zend_std_get_static_property(THIS_CE, ZEND_STRS("contentType")-1, 0 TSRMLS_CC), &ctype_p);
-
- RETVAL_ZVAL(ctype, 1, 0);
-
- if (ctype_p) {
- zval_ptr_dtor(&ctype_p);
- }
+ zval *ctype = http_zsep(IS_STRING, *(zend_std_get_static_property(THIS_CE, ZEND_STRS("contentType")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC)));
+ RETVAL_ZVAL(ctype, 1, 1);
}
}
/* }}} */
RETVAL_FALSE;
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(*zend_std_get_static_property(THIS_CE, ZEND_STRS("mode")-1, 0 TSRMLS_CC))) {
+ switch (Z_LVAL_P(*zend_std_get_static_property(THIS_CE, ZEND_STRS("mode")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC))) {
case SEND_DATA:
{
- zval *data = *zend_std_get_static_property(THIS_CE, ZEND_STRS("data")-1, 0 TSRMLS_CC);
+ zval *data = *zend_std_get_static_property(THIS_CE, ZEND_STRS("data")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC);
ct = http_guess_content_type(magic_file, magic_mode, Z_STRVAL_P(data), Z_STRLEN_P(data), SEND_DATA);
break;
}
case SEND_RSRC:
{
php_stream *s;
- zval *z = *zend_std_get_static_property(THIS_CE, ZEND_STRS("stream")-1, 0 TSRMLS_CC);
+ zval *z = *zend_std_get_static_property(THIS_CE, ZEND_STRS("stream")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC);
z->type = IS_RESOURCE;
php_stream_from_zval(s, &z);
ct = http_guess_content_type(magic_file, magic_mode, s, 0, SEND_RSRC);
}
default:
- ct = http_guess_content_type(magic_file, magic_mode, Z_STRVAL_P(*zend_std_get_static_property(THIS_CE, ZEND_STRS("file")-1, 0 TSRMLS_CC)), 0, -1);
+ ct = http_guess_content_type(magic_file, magic_mode, Z_STRVAL_P(*zend_std_get_static_property(THIS_CE, ZEND_STRS("file")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC)), 0, -1);
break;
}
if (ct) {
NO_ARGS;
if (return_value_used) {
- zval *cd_p, *cd = convert_to_type_ex(IS_STRING, *zend_std_get_static_property(THIS_CE, ZEND_STRS("contentDisposition")-1, 0 TSRMLS_CC), &cd_p);
-
- RETVAL_ZVAL(cd, 1, 0);
-
- if (cd_p) {
- zval_ptr_dtor(&cd_p);
- }
+ zval *cdisp = http_zsep(IS_STRING, *(zend_std_get_static_property(THIS_CE, ZEND_STRS("contentDisposition")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC)));
+ RETVAL_ZVAL(cdisp, 1, 1);
}
}
/* }}} */
NO_ARGS;
if (return_value_used) {
- zval *etag_p, *etag = convert_to_type_ex(IS_STRING, *zend_std_get_static_property(THIS_CE, ZEND_STRS("eTag")-1, 0 TSRMLS_CC), &etag_p);
-
- RETVAL_ZVAL(etag, 1, 0);
-
- if (etag_p) {
- zval_ptr_dtor(&etag_p);
- }
+ zval *etag = http_zsep(IS_STRING, *(zend_std_get_static_property(THIS_CE, ZEND_STRS("eTag")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC)));
+ RETVAL_ZVAL(etag, 1, 1);
}
}
/* }}} */
NO_ARGS;
if (return_value_used) {
- zval *lm_p, *lm = convert_to_type_ex(IS_LONG, *zend_std_get_static_property(THIS_CE, ZEND_STRS("lastModified")-1, 0 TSRMLS_CC), &lm_p);
-
- RETVAL_ZVAL(lm, 1, 0);
-
- if (lm_p) {
- zval_ptr_dtor(&lm_p);
- }
+ zval *lmod = http_zsep(IS_LONG, *(zend_std_get_static_property(THIS_CE, ZEND_STRS("lastModified")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC)));
+ RETVAL_ZVAL(lmod, 1, 1);
}
}
/* }}} */
NO_ARGS;
if (return_value_used) {
- zval *delay_p, *delay = convert_to_type_ex(IS_DOUBLE, *zend_std_get_static_property(THIS_CE, ZEND_STRS("throttleDelay")-1, 0 TSRMLS_CC), &delay_p);
-
- RETVAL_ZVAL(delay, 1, 0);
-
- if (delay_p) {
- zval_ptr_dtor(&delay_p);
- }
+ zval *tdel = http_zsep(IS_DOUBLE, *(zend_std_get_static_property(THIS_CE, ZEND_STRS("throttleDelay")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC)));
+ RETVAL_ZVAL(tdel, 1, 1);
}
}
/* }}} */
NO_ARGS;
if (return_value_used) {
- zval *size_p, *size = convert_to_type_ex(IS_LONG, *zend_std_get_static_property(THIS_CE, ZEND_STRS("bufferSize")-1, 0 TSRMLS_CC), &size_p);
-
- RETVAL_ZVAL(size, 1, 0);
-
- if (size_p) {
- zval_ptr_dtor(&size_p);
- }
+ zval *bsize = http_zsep(IS_LONG, *(zend_std_get_static_property(THIS_CE, ZEND_STRS("bufferSize")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC)));
+ RETVAL_ZVAL(bsize, 1, 1);
}
}
/* }}} */
RETURN_FALSE;
}
if (Z_TYPE_P(the_data) != IS_STRING) {
- convert_to_string_ex(&the_data);
+ convert_to_string(the_data);
}
if ( (SUCCESS != zend_update_static_property(THIS_CE, ZEND_STRS("data")-1, the_data TSRMLS_CC)) ||
NO_ARGS;
if (return_value_used) {
- zval *the_data = *zend_std_get_static_property(THIS_CE, ZEND_STRS("data")-1, 0 TSRMLS_CC);
+ zval *the_data = *zend_std_get_static_property(THIS_CE, ZEND_STRS("data")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC);
RETURN_ZVAL(the_data, 1, 0);
}
NO_ARGS;
if (return_value_used) {
- zval *stream_p;
-
- RETVAL_RESOURCE(Z_LVAL_P(convert_to_type_ex(IS_LONG, *zend_std_get_static_property(THIS_CE, ZEND_STRS("stream")-1, 0 TSRMLS_CC), &stream_p)));
-
- if (stream_p) {
- zval_ptr_dtor(&stream_p);
- }
+ zval *stream = http_zsep(IS_LONG, *(zend_std_get_static_property(THIS_CE, ZEND_STRS("stream")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC)));
+ RETVAL_RESOURCE(Z_LVAL_P(stream));
+ zval_ptr_dtor(&stream);
}
}
/* }}} */
NO_ARGS;
if (return_value_used) {
- zval *the_file_p, *the_file = convert_to_type_ex(IS_STRING, *zend_std_get_static_property(THIS_CE, ZEND_STRS("file")-1, 0 TSRMLS_CC), &the_file_p);
-
- RETVAL_ZVAL(the_file, 1, 0);
-
- if (the_file_p) {
- zval_ptr_dtor(&the_file_p);
- }
+ zval *file = http_zsep(IS_STRING, *(zend_std_get_static_property(THIS_CE, ZEND_STRS("file")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC)));
+ RETVAL_ZVAL(file, 1, 1);
}
}
/* }}} */
HTTP_CHECK_HEADERS_SENT(RETURN_FALSE);
- sent = *zend_std_get_static_property(THIS_CE, ZEND_STRS("sent")-1, 0 TSRMLS_CC);
+ sent = *zend_std_get_static_property(THIS_CE, ZEND_STRS("sent")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC);
if (Z_LVAL_P(sent)) {
http_error(HE_WARNING, HTTP_E_RESPONSE, "Cannot send HttpResponse, response has already been sent");
RETURN_FALSE;
}
/* capture mode */
- if (i_zend_is_true(*zend_std_get_static_property(THIS_CE, ZEND_STRS("catch")-1, 0 TSRMLS_CC))) {
- zval *etag_p, *the_data;
+ if (i_zend_is_true(*zend_std_get_static_property(THIS_CE, ZEND_STRS("catch")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC))) {
+ zval *zetag, *the_data;
MAKE_STD_ZVAL(the_data);
+#ifdef PHP_OUTPUT_NEWAPI
+ php_output_get_contents(the_data TSRMLS_CC);
+#else
php_ob_get_buffer(the_data TSRMLS_CC);
+#endif
zend_update_static_property(THIS_CE, ZEND_STRS("data")-1, the_data TSRMLS_CC);
- ZVAL_LONG(*zend_std_get_static_property(THIS_CE, ZEND_STRS("mode")-1, 0 TSRMLS_CC), SEND_DATA);
+ ZVAL_LONG(*zend_std_get_static_property(THIS_CE, ZEND_STRS("mode")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC), SEND_DATA);
- if (!Z_STRLEN_P(convert_to_type_ex(IS_STRING, *zend_std_get_static_property(THIS_CE, ZEND_STRS("eTag")-1, 0 TSRMLS_CC), &etag_p))) {
+ zetag = http_zsep(IS_STRING, *(zend_std_get_static_property(THIS_CE, ZEND_STRS("eTag")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC)));
+ if (!Z_STRLEN_P(zetag)) {
char *etag = http_etag(Z_STRVAL_P(the_data), Z_STRLEN_P(the_data), SEND_DATA);
if (etag) {
zend_update_static_property_string(THIS_CE, ZEND_STRS("eTag")-1, etag TSRMLS_CC);
}
}
zval_ptr_dtor(&the_data);
-
- if (etag_p) {
- zval_ptr_dtor(&etag_p);
- }
+ zval_ptr_dtor(&zetag);
clean_ob = 1;
}
/* interrupt on-the-fly etag generation */
HTTP_G->etag.started = 0;
/* discard previous output buffers */
+#ifdef PHP_OUTPUT_NEWAPI
+ php_output_discard_all(TSRMLS_C);
+#else
php_end_ob_buffers(0 TSRMLS_CC);
+#endif
}
/* caching */
- if (i_zend_is_true(*zend_std_get_static_property(THIS_CE, ZEND_STRS("cache")-1, 0 TSRMLS_CC))) {
- zval *cctl, *cctl_p, *etag, *etag_p, *lmod, *lmod_p;
+ if (i_zend_is_true(*zend_std_get_static_property(THIS_CE, ZEND_STRS("cache")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC))) {
+ zval *cctl, *etag, *lmod;
- etag = convert_to_type_ex(IS_STRING, *zend_std_get_static_property(THIS_CE, ZEND_STRS("eTag")-1, 0 TSRMLS_CC), &etag_p);
- lmod = convert_to_type_ex(IS_LONG, *zend_std_get_static_property(THIS_CE, ZEND_STRS("lastModified")-1, 0 TSRMLS_CC), &lmod_p);
- cctl = convert_to_type_ex(IS_STRING, *zend_std_get_static_property(THIS_CE, ZEND_STRS("cacheControl")-1, 0 TSRMLS_CC), &cctl_p);
+ lmod = http_zsep(IS_LONG, *(zend_std_get_static_property(THIS_CE, ZEND_STRS("lastModified")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC)));
+ etag = http_zsep(IS_STRING, *(zend_std_get_static_property(THIS_CE, ZEND_STRS("eTag")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC)));
+ cctl = http_zsep(IS_STRING, *(zend_std_get_static_property(THIS_CE, ZEND_STRS("cacheControl")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC)));
if (Z_LVAL_P(lmod) || Z_STRLEN_P(etag)) {
if (Z_STRLEN_P(cctl)) {
}
}
- if (etag_p) zval_ptr_dtor(&etag_p);
- if (lmod_p) zval_ptr_dtor(&lmod_p);
- if (cctl_p) zval_ptr_dtor(&cctl_p);
+ zval_ptr_dtor(&etag);
+ zval_ptr_dtor(&lmod);
+ zval_ptr_dtor(&cctl);
}
/* content type */
{
- zval *ctype_p, *ctype = convert_to_type_ex(IS_STRING, *zend_std_get_static_property(THIS_CE, ZEND_STRS("contentType")-1, 0 TSRMLS_CC), &ctype_p);
+ zval *ctype = http_zsep(IS_STRING, *(zend_std_get_static_property(THIS_CE, ZEND_STRS("contentType")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC)));
if (Z_STRLEN_P(ctype)) {
http_send_content_type(Z_STRVAL_P(ctype), Z_STRLEN_P(ctype));
} else {
http_send_content_type("application/x-octetstream", lenof("application/x-octetstream"));
}
}
- if (ctype_p) {
- zval_ptr_dtor(&ctype_p);
- }
+ zval_ptr_dtor(&ctype);
}
/* content disposition */
{
- zval *cd_p, *cd = convert_to_type_ex(IS_STRING, *zend_std_get_static_property(THIS_CE, ZEND_STRS("contentDisposition")-1, 0 TSRMLS_CC), &cd_p);
+ zval *cd = http_zsep(IS_STRING, *(zend_std_get_static_property(THIS_CE, ZEND_STRS("contentDisposition")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC)));
if (Z_STRLEN_P(cd)) {
http_send_header_ex("Content-Disposition", lenof("Content-Disposition"), Z_STRVAL_P(cd), Z_STRLEN_P(cd), 1, NULL);
}
- if (cd_p) {
- zval_ptr_dtor(&cd_p);
- }
+ zval_ptr_dtor(&cd);
}
/* throttling */
{
- zval *bsize_p, *bsize = convert_to_type_ex(IS_LONG, *zend_std_get_static_property(THIS_CE, ZEND_STRS("bufferSize")-1, 0 TSRMLS_CC), &bsize_p);
- zval *delay_p, *delay = convert_to_type_ex(IS_DOUBLE, *zend_std_get_static_property(THIS_CE, ZEND_STRS("throttleDelay")-1, 0 TSRMLS_CC), &delay_p);
+ zval *bsize = http_zsep(IS_LONG, *(zend_std_get_static_property(THIS_CE, ZEND_STRS("bufferSize")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC)));
+ zval *delay = http_zsep(IS_DOUBLE, *(zend_std_get_static_property(THIS_CE, ZEND_STRS("throttleDelay")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC)));
HTTP_G->send.buffer_size = Z_LVAL_P(bsize);
HTTP_G->send.throttle_delay = Z_DVAL_P(delay);
- if (bsize_p) zval_ptr_dtor(&bsize_p);
- if (delay_p) zval_ptr_dtor(&delay_p);
+ zval_ptr_dtor(&bsize);
+ zval_ptr_dtor(&delay);
}
/* gzip */
- HTTP_G->send.deflate.response = i_zend_is_true(*zend_std_get_static_property(THIS_CE, ZEND_STRS("gzip")-1, 0 TSRMLS_CC));
+ HTTP_G->send.deflate.response = i_zend_is_true(*zend_std_get_static_property(THIS_CE, ZEND_STRS("gzip")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC));
/* send */
- switch (Z_LVAL_P(*zend_std_get_static_property(THIS_CE, ZEND_STRS("mode")-1, 0 TSRMLS_CC))) {
+ switch (Z_LVAL_P(*zend_std_get_static_property(THIS_CE, ZEND_STRS("mode")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC))) {
case SEND_DATA:
{
- zval *zdata_p, *zdata = convert_to_type_ex(IS_STRING, *zend_std_get_static_property(THIS_CE, ZEND_STRS("data")-1, 0 TSRMLS_CC), &zdata_p);
+ zval *zdata = http_zsep(IS_STRING, *(zend_std_get_static_property(THIS_CE, ZEND_STRS("data")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC)));
RETVAL_SUCCESS(http_send_data(Z_STRVAL_P(zdata), Z_STRLEN_P(zdata)));
- if (zdata_p) zval_ptr_dtor(&zdata_p);
+ zval_ptr_dtor(&zdata);
return;
}
case SEND_RSRC:
{
php_stream *the_real_stream;
- zval *the_stream_p, *the_stream = convert_to_type_ex(IS_LONG, *zend_std_get_static_property(THIS_CE, ZEND_STRS("stream")-1, 0 TSRMLS_CC), &the_stream_p);
+ zval *the_stream = http_zsep(IS_LONG, *(zend_std_get_static_property(THIS_CE, ZEND_STRS("stream")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC)));
the_stream->type = IS_RESOURCE;
php_stream_from_zval(the_real_stream, &the_stream);
RETVAL_SUCCESS(http_send_stream(the_real_stream));
- if (the_stream_p) zval_ptr_dtor(&the_stream_p);
+ zval_ptr_dtor(&the_stream);
return;
}
default:
{
- zval *file_p;
- RETVAL_SUCCESS(http_send_file(Z_STRVAL_P(convert_to_type_ex(IS_STRING, *zend_std_get_static_property(THIS_CE, ZEND_STRS("file")-1, 0 TSRMLS_CC), &file_p))));
- if (file_p) zval_ptr_dtor(&file_p);
+ zval *file = http_zsep(IS_STRING, *(zend_std_get_static_property(THIS_CE, ZEND_STRS("file")-1, 0 ZEND_LITERAL_NIL_CC TSRMLS_CC)));
+ RETVAL_SUCCESS(http_send_file(Z_STRVAL_P(file)));
+ zval_ptr_dtor(&file);
return;
}
}
HTTP_CHECK_HEADERS_SENT(RETURN_FALSE);
zend_update_static_property_long(THIS_CE, ZEND_STRS("catch")-1, 1 TSRMLS_CC);
-
+#ifdef PHP_OUTPUT_NEWAPI
+ php_output_discard_all(TSRMLS_C);
+ php_output_start_default(TSRMLS_C);
+#else
php_end_ob_buffers(0 TSRMLS_CC);
php_start_ob_buffer(NULL, 0, 0 TSRMLS_CC);
+#endif
/* register shutdown function */
{