- fix chicken&egg problem with ZTS + persistent handles + global request datashare
[m6w6/ext-http] / php_http_request_datashare_api.h
index 08b30edc9161ff225f722a651c069a3779ac14c5..819913727cb838323807ac622381edb93d0c3ff9 100644 (file)
@@ -26,13 +26,19 @@ typedef struct _http_request_datashare_lock_t {
 typedef struct _http_request_datashare_t {
        CURLSH *ch;
        zend_bool persistent;
-       zend_llist *handles;
 #ifdef ZTS
-       http_request_datashare_lock *locks;
+       union {
+               zend_llist *list;
+               http_request_datashare_lock *locks;
+       } handle;
+#else
+       struct {
+               zend_llist *list;
+       } handle;
 #endif
 } http_request_datashare;
 
-#define HTTP_RSHARE_HANDLES(s) ((s)->persistent ? &HTTP_G->request.datashare.handles : (s)->handles)
+#define HTTP_RSHARE_HANDLES(s) ((s)->persistent ? &HTTP_G->request.datashare.handles : (s)->handle.list)
 
 #define http_request_datashare_global_get _http_request_datashare_global_get
 extern http_request_datashare *_http_request_datashare_global_get(void);