From 361171a4e89a313fae8aa823c2279b32ec0c08bc Mon Sep 17 00:00:00 2001
From: Andreas Gohr <gohr@cosmocode.de>
Date: Wed, 22 Feb 2012 17:34:53 +0100
Subject: [PATCH] simpler/more robust header parsing in HTTPClient

The previous regexp approach failed for empty headers.
---
 inc/HTTPClient.php | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/inc/HTTPClient.php b/inc/HTTPClient.php
index 641950348..f0470e736 100644
--- a/inc/HTTPClient.php
+++ b/inc/HTTPClient.php
@@ -580,13 +580,14 @@ class HTTPClient {
      */
     function _parseHeaders($string){
         $headers = array();
-        if (!preg_match_all('/^\s*([\w-]+)\s*:\s*([\S \t]+)\s*$/m', $string,
-                            $matches, PREG_SET_ORDER)) {
-            return $headers;
-        }
-        foreach($matches as $match){
-            list(, $key, $val) = $match;
+        $lines = explode("\n",$string);
+        array_shift($lines); //skip first line (status)
+        foreach($lines as $line){
+            list($key, $val) = explode(':',$line,2);
+            $key = trim($key);
+            $val = trim($val);
             $key = strtolower($key);
+            if(!$key) continue;
             if(isset($headers[$key])){
                 if(is_array($headers[$key])){
                     $headers[$key][] = $val;
-- 
GitLab