@@ -122,7 +122,7 @@ public function __construct($base_url = null)
122
122
$ header_callback_data ->rawResponseHeaders = '' ;
123
123
$ header_callback_data ->responseCookies = array ();
124
124
$ this ->headerCallbackData = $ header_callback_data ;
125
- $ this ->setOpt (CURLOPT_HEADERFUNCTION , $ this -> createHeaderCallback ($ header_callback_data ));
125
+ $ this ->setOpt (CURLOPT_HEADERFUNCTION , createHeaderCallback ($ header_callback_data ));
126
126
127
127
$ this ->setOpt (CURLOPT_RETURNTRANSFER , true );
128
128
$ this ->headers = new CaseInsensitiveArray ();
@@ -1302,25 +1302,6 @@ private function buildUrl($url, $mixed_data = '')
1302
1302
return $ url . $ query_string ;
1303
1303
}
1304
1304
1305
- /**
1306
- * Create Header Callback
1307
- *
1308
- * @access private
1309
- * @param $header_callback_data
1310
- *
1311
- * @return callable
1312
- */
1313
- private function createHeaderCallback ($ header_callback_data )
1314
- {
1315
- return function ($ ch , $ header ) use ($ header_callback_data ) {
1316
- if (preg_match ('/^Set-Cookie:\s*([^=]+)=([^;]+)/mi ' , $ header , $ cookie ) === 1 ) {
1317
- $ header_callback_data ->responseCookies [$ cookie [1 ]] = trim ($ cookie [2 ], " \n\r\t\0\x0B" );
1318
- }
1319
- $ header_callback_data ->rawResponseHeaders .= $ header ;
1320
- return strlen ($ header );
1321
- };
1322
- }
1323
-
1324
1305
/**
1325
1306
* Download Complete
1326
1307
*
@@ -1505,3 +1486,24 @@ private function setEncodedCookie($key, $value)
1505
1486
$ this ->cookies [implode ('' , $ name_chars )] = implode ('' , $ value_chars );
1506
1487
}
1507
1488
}
1489
+
1490
+ /**
1491
+ * Create Header Callback
1492
+ *
1493
+ * Gather headers and parse cookies as response headers are received. Keep this function separate from the class so that
1494
+ * unset($curl) automatically calls __destruct() as expected. Otherwise, manually calling $curl->close() will be
1495
+ * necessary to prevent a memory leak.
1496
+ *
1497
+ * @param $header_callback_data
1498
+ *
1499
+ * @return callable
1500
+ */
1501
+ function createHeaderCallback ($ header_callback_data ) {
1502
+ return function ($ ch , $ header ) use ($ header_callback_data ) {
1503
+ if (preg_match ('/^Set-Cookie:\s*([^=]+)=([^;]+)/mi ' , $ header , $ cookie ) === 1 ) {
1504
+ $ header_callback_data ->responseCookies [$ cookie [1 ]] = trim ($ cookie [2 ], " \n\r\t\0\x0B" );
1505
+ }
1506
+ $ header_callback_data ->rawResponseHeaders .= $ header ;
1507
+ return strlen ($ header );
1508
+ };
1509
+ }
0 commit comments