diff options
author | Mike Macgirvin <mike@macgirvin.com> | 2010-10-21 16:45:26 -0700 |
---|---|---|
committer | Mike Macgirvin <mike@macgirvin.com> | 2010-10-21 16:45:26 -0700 |
commit | d193763aa86d374e7b01afd0b5e2c26434c350d3 (patch) | |
tree | ef943ed0b033be35a3bd434724c276f55ab1028a /boot.php | |
parent | a266217a6d6376a2f43f66b9a9cc4aa5e4a8455a (diff) | |
download | volse-hubzilla-d193763aa86d374e7b01afd0b5e2c26434c350d3.tar.gz volse-hubzilla-d193763aa86d374e7b01afd0b5e2c26434c350d3.tar.bz2 volse-hubzilla-d193763aa86d374e7b01afd0b5e2c26434c350d3.zip |
fixed it. Twas the infernal 100 continue headers
Diffstat (limited to 'boot.php')
-rw-r--r-- | boot.php | 18 |
1 files changed, 14 insertions, 4 deletions
@@ -354,7 +354,7 @@ function fetch_url($url,$binary = false, &$redirects = 0) { if(($redirects > 8) || (! $ch)) return false; - curl_setopt($ch, CURLOPT_HEADER, false); + curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER,true); // by default we will allow self-signed certs @@ -378,6 +378,11 @@ function fetch_url($url,$binary = false, &$redirects = 0) { $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); $header = substr($s,0,strpos($s,"\r\n\r\n")); + if(stristr($header,'100') && (strlen($header) < 30)) { + // 100 Continue has two headers, get the real one + $s = substr($s,strlen($header)+4); + $header = substr($s,0,strpos($s,"\r\n\r\n")); + } if($http_code == 301 || $http_code == 302 || $http_code == 303) { $matches = array(); preg_match('/(Location:|URI:)(.*?)\n/', $header, $matches); @@ -394,7 +399,7 @@ function fetch_url($url,$binary = false, &$redirects = 0) { $a->set_curl_headers($header); curl_close($ch); - return($s); + return($body); }} // post request to $url. $params is an array of post variables. @@ -405,7 +410,7 @@ function post_url($url,$params, &$redirects = 0) { if(($redirects > 8) || (! $ch)) return false; - curl_setopt($ch, CURLOPT_HEADER, false); + curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER,true); curl_setopt($ch, CURLOPT_POST,1); curl_setopt($ch, CURLOPT_POSTFIELDS,$params); @@ -425,6 +430,11 @@ function post_url($url,$params, &$redirects = 0) { $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); $header = substr($s,0,strpos($s,"\r\n\r\n")); + if(stristr($header,'100') && (strlen($header) < 30)) { + // 100 Continue has two headers, get the real one + $s = substr($s,strlen($header)+4); + $header = substr($s,0,strpos($s,"\r\n\r\n")); + } if($http_code == 301 || $http_code == 302 || $http_code == 303) { $matches = array(); preg_match('/(Location:|URI:)(.*?)\n/', $header, $matches); @@ -441,7 +451,7 @@ function post_url($url,$params, &$redirects = 0) { $a->set_curl_headers($header); curl_close($ch); - return($s); + return($body); }} // random hash, 64 chars |