+ struct _http_globals_log {
+ char *cache;
+ char *redirect;
+ char *allowed_methods;
+ char *composite;
+ } log;
+
+ struct _http_globals_send {
+ double throttle_delay;
+ size_t buffer_size;
+ char *content_type;
+ char *unquoted_etag;
+ time_t last_modified;
+ } send;
+
+ struct _http_globals_request {
+ struct _http_globals_request_methods {
+ char *allowed;
+ HashTable custom;
+ } methods;
+
+#ifdef HTTP_HAVE_CURL
+ struct _http_globals_request_copies {
+ zend_llist strings;
+ zend_llist slists;
+ zend_llist contexts;
+ zend_llist convs;
+ } copies;
+# ifndef HAVE_CURL_EASY_STRERROR
+ char error[CURL_ERROR_SIZE + 1];
+# endif
+#endif /* HTTP_HAVE_CURL */
+ } request;
+
+ZEND_END_MODULE_GLOBALS(http)
+
+#ifdef ZTS
+# include "TSRM.h"
+# define HTTP_G(v) TSRMG(http_globals_id, zend_http_globals *, v)
+# define HTTP_GLOBALS ((zend_http_globals *) (*((void ***) tsrm_ls))[TSRM_UNSHUFFLE_RSRC_ID(http_globals_id)])
+#else
+# define HTTP_G(v) (http_globals.v)
+# define HTTP_GLOBALS (&http_globals)