static inline void http_ssl_cleanup(void);
#endif
-STATUS _http_request_global_init(INIT_FUNC_ARGS)
+PHP_MINIT_FUNCTION(http_request)
{
if (CURLE_OK != curl_global_init(CURL_GLOBAL_ALL)) {
return FAILURE;
return SUCCESS;
}
-void _http_request_global_cleanup(TSRMLS_D)
+PHP_MSHUTDOWN_FUNCTION(http_request)
{
curl_global_cleanup();
#ifdef HTTP_NEED_SSL
http_ssl_cleanup();
#endif
+ return SUCCESS;
}
#ifndef HAVE_CURL_EASY_STRERROR
}
#endif
- /* compress, empty string enables deflate and gzip */
+ /* compress, empty string enables all supported if libcurl was build with zlib support */
if ((zoption = http_curl_getopt(options, "compress", IS_BOOL)) && Z_LVAL_P(zoption)) {
+#if defined(HTTP_HAVE_ZLIB) || defined(HAVE_ZLIB)
+ HTTP_CURL_OPT(ENCODING, "gzip;q=1.0, deflate;q=0.5, *;q=0");
+#else
HTTP_CURL_OPT(ENCODING, "");
+#endif
}
/* redirects, defaults to 0 */
/* lastmodified */
if (zoption = http_curl_getopt(options, "lastmodified", IS_LONG)) {
- HTTP_CURL_OPT(TIMECONDITION, range_req ? CURL_TIMECOND_IFUNMODSINCE : CURL_TIMECOND_IFMODSINCE);
- HTTP_CURL_OPT(TIMEVALUE, Z_LVAL_P(zoption));
+ if (Z_LVAL_P(zoption)) {
+ if (Z_LVAL_P(zoption) > 0) {
+ HTTP_CURL_OPT(TIMEVALUE, Z_LVAL_P(zoption));
+ } else {
+ HTTP_CURL_OPT(TIMEVALUE, time(NULL) + Z_LVAL_P(zoption));
+ }
+ HTTP_CURL_OPT(TIMECONDITION, range_req ? CURL_TIMECOND_IFUNMODSINCE : CURL_TIMECOND_IFMODSINCE);
+ } else {
+ HTTP_CURL_OPT(TIMECONDITION, CURL_TIMECOND_NONE);
+ }
}
/* timeout, defaults to 0 */
PHP_HTTP_API STATUS _http_request_ex(CURL *ch, http_request_method meth, char *url, http_request_body *body, HashTable *options, HashTable *info, phpstr *response TSRMLS_DC)
{
STATUS status;
- zend_bool clean_curl;
+ zend_bool clean_curl = !ch;
- if ((clean_curl = (!ch))) {
- if (!(ch = curl_easy_init())) {
- http_error(HE_WARNING, HTTP_E_REQUEST, "Could not initialize curl.");
- return FAILURE;
- }
- }
+ HTTP_CHECK_CURL_INIT(ch, curl_easy_init(), return FAILURE);
status = ((SUCCESS == http_request_init(ch, meth, url, body, options)) &&
(SUCCESS == http_request_exec(ch, info, response, NULL))) ? SUCCESS : FAILURE;
HTTP_CURL_OPT(COOKIEJAR, NULL);
HTTP_CURL_OPT(RESUME_FROM, 0);
HTTP_CURL_OPT(MAXFILESIZE, 0);
+ HTTP_CURL_OPT(TIMECONDITION, 0);
HTTP_CURL_OPT(TIMEVALUE, 0);
HTTP_CURL_OPT(TIMEOUT, 0);
HTTP_CURL_OPT(CONNECTTIMEOUT, 3);
#endif /* HTTP_HAVE_CURL */
+zend_bool _http_request_supports_ssl(void)
+{
+#ifdef HTTP_NEED_SSL
+ return (zend_bool) 1;
+#else
+ return (zend_bool) 0;
+#endif
+}
+
/*
* Local variables:
* tab-width: 4