#ifdef HTTP_HAVE_MHASH
# include <mhash.h>
#endif
+#ifdef HTTP_HAVE_MAGIC
+# include <magic.h>
+#endif
ZEND_EXTERN_MODULE_GLOBALS(http);
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);
+ DCL_CONST(long, "ETAG_CRC32", HTTP_ETAG_CRC32);
-#ifdef HTTP_HAVE_MHASH
+# ifdef HTTP_HAVE_MHASH
{
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);
}
}
}
-#endif
+# endif /* HTTP_HAVE_MHASH */
+#endif /* WONKY */
}
static void _http_grab_response_headers(void *data, void *arg TSRMLS_DC)
}
/* }}} */
-/* {{{ 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.
*/
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_NORMAL();
+#else
+ http_error(HE_THROW, HTTP_E_RUNTIME, "Cannot guess Content-Type; libmagic not available");
+#endif
}
/* }}} */
*/
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)) {
*/
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);