php_ob_buffer *b = emalloc(sizeof(php_ob_buffer));
b->handler_name = estrdup(o->handler_name);
b->buffer = estrndup(o->buffer, o->text_length);
+ b->text_length = o->text_length;
b->chunk_size = o->chunk_size;
b->erase = o->erase;
s[i++] = b;
php_end_ob_buffer(0, 0 TSRMLS_CC);
}
}
-
+
php_ob_set_internal_handler(handler_func, chunk_size, handler_name, erase TSRMLS_CC);
for (i = 0; i < count; i++) {
php_ob_buffer *s = stack[i];
- php_start_ob_buffer_named(s->handler_name, s->chunk_size, s->erase TSRMLS_CC);
+ if (strcmp(s->handler_name, "default output handler")) {
+ php_start_ob_buffer_named(s->handler_name, s->chunk_size, s->erase TSRMLS_CC);
+ }
php_body_write(s->buffer, s->text_length TSRMLS_CC);
}
PHP_HTTP_API STATUS _http_get(const char *URL, HashTable *options,
HashTable *info, char **data, size_t *data_len TSRMLS_DC)
{
+ STATUS rs;
CURL *ch = curl_easy_init();
if (!ch) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not initialize curl");
return FAILURE;
}
+
+ rs = http_get_ex(ch, URL, options, info, data, data_len);
+ curl_easy_cleanup(ch);
+ return rs;
+}
+/* }}} */
+/* {{{ STATUS http_get_ex(CURL *, char *, HashTable *, HashTable *, char **, size_t *) */
+PHP_HTTP_API STATUS _http_get_ex(CURL *ch, const char *URL, HashTable *options,
+ HashTable *info, char **data, size_t *data_len TSRMLS_DC)
+{
http_curl_initbuf(CURLBUF_EVRY);
http_curl_setopts(ch, URL, options);
+ curl_easy_setopt(ch, CURLOPT_NOBODY, 0);
+ curl_easy_setopt(ch, CURLOPT_POST, 0);
if (CURLE_OK != curl_easy_perform(ch)) {
- curl_easy_cleanup(ch);
http_curl_freebuf(CURLBUF_EVRY);
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not perform request");
return FAILURE;
if (info) {
http_curl_getinfo(ch, info);
}
- curl_easy_cleanup(ch);
-
http_curl_movebuf(CURLBUF_EVRY, data, data_len);
-
return SUCCESS;
}
-/* }}} */
/* {{{ STATUS http_head(char *, HashTable *, HashTable *, char **data, size_t *) */
PHP_HTTP_API STATUS _http_head(const char *URL, HashTable *options,
HashTable *info, char **data, size_t *data_len TSRMLS_DC)
{
+ STATUS rs;
CURL *ch = curl_easy_init();
if (!ch) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not initialize curl");
return FAILURE;
}
+
+ rs = http_head_ex(ch, URL, options, info, data, data_len);
+ curl_easy_cleanup(ch);
+ return rs;
+}
+/* }}} */
+/* {{{ STATUS http_head_ex(CURL *, char *, HashTable *, HashTable *, char **data, size_t *) */
+PHP_HTTP_API STATUS _http_head_ex(CURL *ch, const char *URL, HashTable *options,
+ HashTable *info, char **data, size_t *data_len TSRMLS_DC)
+{
http_curl_initbuf(CURLBUF_HDRS);
http_curl_setopts(ch, URL, options);
curl_easy_setopt(ch, CURLOPT_NOBODY, 1);
+ curl_easy_setopt(ch, CURLOPT_POST, 0);
if (CURLE_OK != curl_easy_perform(ch)) {
- curl_easy_cleanup(ch);
http_curl_freebuf(CURLBUF_HDRS);
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not perform request");
return FAILURE;
if (info) {
http_curl_getinfo(ch, info);
}
- curl_easy_cleanup(ch);
-
http_curl_movebuf(CURLBUF_HDRS, data, data_len);
-
return SUCCESS;
}
-/* }}} */
/* {{{ STATUS http_post_data(char *, char *, size_t, HashTable *, HashTable *, char **, size_t *) */
PHP_HTTP_API STATUS _http_post_data(const char *URL, char *postdata,
size_t postdata_len, HashTable *options, HashTable *info, char **data,
size_t *data_len TSRMLS_DC)
{
+ STATUS rs;
CURL *ch = curl_easy_init();
if (!ch) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not initialize curl");
return FAILURE;
}
+ rs = http_post_data_ex(ch, URL, postdata, postdata_len, options, info, data, data_len);
+ curl_easy_cleanup(ch);
+ return rs;
+}
+/* }}} */
+/* {{{ STATUS http_post_data_ex(CURL *, char *, char *, size_t, HashTable *, HashTable *, char **, size_t *) */
+PHP_HTTP_API STATUS _http_post_data_ex(CURL *ch, const char *URL, char *postdata,
+ size_t postdata_len, HashTable *options, HashTable *info, char **data,
+ size_t *data_len TSRMLS_DC)
+{
http_curl_initbuf(CURLBUF_EVRY);
http_curl_setopts(ch, URL, options);
curl_easy_setopt(ch, CURLOPT_POST, 1);
curl_easy_setopt(ch, CURLOPT_POSTFIELDSIZE, postdata_len);
if (CURLE_OK != curl_easy_perform(ch)) {
- curl_easy_cleanup(ch);
http_curl_freebuf(CURLBUF_EVRY);
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not perform request");
return FAILURE;
if (info) {
http_curl_getinfo(ch, info);
}
- curl_easy_cleanup(ch);
-
http_curl_movebuf(CURLBUF_EVRY, data, data_len);
-
return SUCCESS;
}
/* }}} */