Feature 5388: Print Invoices (documents) list gets too long. Fixed by default 180...
[fa-stable.git] / includes / remote_url.inc
index 186b4f97660aeaabb6f9c737b6dacede1ad521e9..5c6790aee3f0bc6b03779daf8eecb6cceb0a8e6c 100644 (file)
@@ -19,6 +19,9 @@ function url_get_contents($url, $timeout=10)
        // get the host name and url path
        $parsedUrl = parse_url($url);
 
+       if (@$parsedUrl['scheme'] == 'file')
+               return file_get_contents($parsedUrl['path']);
+
        $host = $parsedUrl['host'];
 
        if (isset($parsedUrl['path'])) {
@@ -40,7 +43,6 @@ function url_get_contents($url, $timeout=10)
        }
 
        $response = '';
-
        // connect to the remote server
        $fp = @fsockopen($host, $port, $errno, $errstr, $timeout );
        if( !$fp ) {
@@ -55,20 +57,12 @@ function url_get_contents($url, $timeout=10)
                        "Accept: */*\r\n" .
                        "Accept-Language: en-us,en;q=0.5\r\n" .
                        "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n" .
-                       "Keep-Alive: 300\r\n" .
-                       "Connection: keep-alive\r\n" .
+                       "Connection: close\r\n" .
                        "Referer: http://$host\r\n\r\n");
 
                // retrieve the response from the remote server
-               $unblocked=0;
 
-               while ($line = fread($fp, 4096)) {
-                       $response .= $line;
-                       if ($host=='localhost' && !$unblocked++)
-                               stream_set_blocking($fp, 0); // just after connection switch to nonblocking mode
-                       usleep(10);
-               }
-               fclose( $fp );
+               $response = stream_get_contents($fp);
 
                if (!strpos($response, "200 OK\r\n"))
                        return null;
@@ -85,6 +79,8 @@ function url_get_contents($url, $timeout=10)
 function url_copy($from, $to, $timeout=10)
 {
        $f = fopen($to, 'wb');
-       fwrite($f, url_get_contents($from, $timeout));
+       if (!$f || !fwrite($f, url_get_contents($from, $timeout)))
+               return false;
        fclose($f);
+       return true;
 }