Renamed script to baseUrl to make it more clear
[mailer.git] / inc / http-functions.php
index b0cbca319d79501193253058fab94b37f113ff3e..5e7aefa5718f0ed991119f0004c3d8820576f9aa 100644 (file)
@@ -59,17 +59,17 @@ function sendHttpHeaders () {
 }
 
 // Send a GET request
-function sendGetRequest ($script, $data = array(), $removeHeader = false) {
+function sendGetRequest ($baseUrl, $data = array(), $removeHeader = false) {
        // Extract hostname and port from script
-       $host = extractHostnameFromUrl($script);
+       $host = extractHostnameFromUrl($baseUrl);
 
        // Add data
        $body = http_build_query($data, '', '&');
 
-       // There should be data, else we don't need to extend $script with $body
+       // There should be data, else we don't need to extend $baseUrl with $body
        if (!empty($body)) {
                // Do we have a question-mark in the script?
-               if (strpos($script, '?') === false) {
+               if (strpos($baseUrl, '?') === false) {
                        // No, so first char must be question mark
                        $body = '?' . $body;
                } else {
@@ -78,16 +78,16 @@ function sendGetRequest ($script, $data = array(), $removeHeader = false) {
                }
 
                // Add script data
-               $script .= $body;
+               $baseUrl .= $body;
 
                // Remove trailed & to make it more conform
-               if (substr($script, -1, 1) == '&') {
-                       $script = substr($script, 0, -1);
+               if (substr($baseUrl, -1, 1) == '&') {
+                       $baseUrl = substr($baseUrl, 0, -1);
                } // END - if
        } // END - if
 
        // Generate GET request header
-       $request  = 'GET /' . trim($script) . ' HTTP/1.1' . getConfig('HTTP_EOL');
+       $request  = 'GET /' . trim($baseUrl) . ' HTTP/1.1' . getConfig('HTTP_EOL');
        $request .= 'Host: ' . $host . getConfig('HTTP_EOL');
        $request .= 'Referer: ' . getUrl() . '/admin.php' . getConfig('HTTP_EOL');
        if (isConfigEntrySet('FULL_VERSION')) {
@@ -115,15 +115,15 @@ function sendGetRequest ($script, $data = array(), $removeHeader = false) {
 }
 
 // Send a POST request
-function sendPostRequest ($script, array $postData, $removeHeader = false) {
+function sendPostRequest ($baseUrl, array $postData, $removeHeader = false) {
        // Extract host name from script
-       $host = extractHostnameFromUrl($script);
+       $host = extractHostnameFromUrl($baseUrl);
 
        // Construct request body
        $body = http_build_query($postData, '', '&');
 
        // Generate POST request header
-       $request  = 'POST /' . trim($script) . ' HTTP/1.0' . getConfig('HTTP_EOL');
+       $request  = 'POST /' . trim($baseUrl) . ' HTTP/1.0' . getConfig('HTTP_EOL');
        $request .= 'Host: ' . $host . getConfig('HTTP_EOL');
        $request .= 'Referer: ' . getUrl() . '/admin.php' . getConfig('HTTP_EOL');
        $request .= 'User-Agent: ' . getTitle() . '/' . getFullVersion() . getConfig('HTTP_EOL');
@@ -193,7 +193,7 @@ function sendRawRequest ($host, $request) {
        $resolver = new HostnameResolver();
 
        // Open connection
-       //* DEBUG: */ die('SCRIPT=' . $script);
+       //* DEBUG: */ die('baseUrl=' . $baseUrl);
        if ($useProxy === true) {
                // Resolve hostname into IP address
                $ip = $resolver->resolveHostname(compileRawCode(getProxyHost()));
@@ -267,7 +267,7 @@ function sendRawRequest ($host, $request) {
                // Check for broken HTTP implementations
                if (substr(strtolower($line), 0, 7) == 'server:') {
                        // Anomic (see http://anomic.de, http://yacy.net) is currently broken
-                       $GLOBALS['is_http_server_broken'] = in_array(trim(substr(strtolower($line), 7)), array('anomichttpd'));
+                       $GLOBALS['is_http_server_broken'] = (count(getArrayKeysFromSubStrArray(strtolower($line), array('anomichttpd'))) > 0);
                } // END - if
 
                // Add it to response
@@ -467,7 +467,7 @@ if (!function_exists('http_build_query')) {
                        if (is_array($v) || is_object($v)) {
                                array_push($ret, http_build_query($v, '', $sep, $k));
                        } else {
-                               array_push($ret, $k.'='.urlencode($v));
+                               array_push($ret, $k . '=' . urlencode($v));
                        }
                } // END - foreach
 
@@ -485,7 +485,8 @@ if (!function_exists('http_chunked_decode')) {
         *
         * @param       $chunk          The encoded message
         * @return      $dechunk        The decoded message. If $chunk wasn't encoded properly debug_report_bug() is being called
-        * @author      Marques Johansson
+        * @author      Marques Johansson (initial author)
+        * @author      Roland Haeder (heavy modifications and simplification)
         * @link        http://php.net/manual/en/function.http-chunked-decode.php#89786
         */
        function http_chunked_decode ($chunk) {
@@ -543,8 +544,9 @@ offset[<em>'.__LINE__.'</em>]='.$offset.'<br />';
 
                        /*
                         * Hack for e.g. YaCy HTTPDaemon (Anomic Server), this HTTP server
-                        * is currently (revision 7567) broken and does not include the \r\n
-                        * characters when it does sent "chunked" messages.
+                        * is currently (revision 7567 and maybe earlier) broken and does
+                        * not include the \r\n characters when it sents a "chunked" HTTP
+                        * message.
                         */
                        $count = 0;
                        if (isBrokenHttpServerImplentation()) {
@@ -552,7 +554,11 @@ offset[<em>'.__LINE__.'</em>]='.$offset.'<br />';
                                $count = call_user_func_array($mbPrefix . 'substr_count', array($next, getConfig('HTTP_EOL')));
                        } // END - if
 
-                       // Correct it because we need to subtract occurrences of \r\n
+                       /*
+                        * Correct chunk length because some broken HTTP server
+                        * implementation subtract occurrences of \r\n in their chunk
+                        * lengths.
+                        */
                        $chunkLen = hexdec(rtrim($chunkLenHex, getConfig('HTTP_EOL'))) - ($count * strlen(getConfig('HTTP_EOL')));
 
                        // Add next chunk to $dechunk
@@ -575,7 +581,7 @@ chunk=<pre>'.replaceReturnNewLine(htmlentities($chunk)).'</pre>');
                                break;
                        } // END - if
 
-                       // Calculate next offset of chunk
+                       // Calculate offset of next chunk
                        $offset = call_user_func_array($mbPrefix . 'strpos', array($chunk, getConfig('HTTP_EOL'), $offset + $chunkLen)) + 2;
 
                        /* DEBUG: *