From 96985dcb9b09c0f09d9d8ca02cb59a8c0a93cdab Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Wed, 9 Jan 2013 20:09:30 +0000 Subject: [PATCH] Fixes to HTTP functions to return proper HTTP body and headers: - Emptied to .htaccess files to allow accessing doxygen documentation (html) - The first "$response = array('', '', '')" line caused to much trouble - Use "strlen($line) == 0" instead of "empty($line)" or else \r\n will be detected as empty - Removed superfluious empty line removal block - Fixed broken HTTP headers - Added \r\n to them to mimic header->body - TODOs.txt updated --- DOCS/.htaccess | 1 - DOCS/TODOs.txt | 4 +--- DOCS/doxygen/.htaccess | 1 - inc/classes/rdf.class.php | 2 +- inc/http-functions.php | 40 ++++++++++++++++++--------------------- 5 files changed, 20 insertions(+), 28 deletions(-) diff --git a/DOCS/.htaccess b/DOCS/.htaccess index 3a42882788..e69de29bb2 100644 --- a/DOCS/.htaccess +++ b/DOCS/.htaccess @@ -1 +0,0 @@ -Deny from all diff --git a/DOCS/TODOs.txt b/DOCS/TODOs.txt index 911faf5076..1ee1bacba4 100644 --- a/DOCS/TODOs.txt +++ b/DOCS/TODOs.txt @@ -158,7 +158,6 @@ ./inc/modules/admin/what-usr_online.php:49: // @TODO Add a filter for sponsor ./inc/modules/frametester.php:95: // @TODO Rewrite this somehow ./inc/modules/guest/what-beg.php:51:// @TODO No more needed? define('__BEG_USERID_TIMEOUT', createFancyTime(getBegUseridTimeout())); -./inc/modules/guest/what-login.php:134: // @TODO Move this HTML code into a template ./inc/modules/guest/what-mediadata.php:188:// @TODO Rewrite all these if-blocks to filters ./inc/modules/guest/what-mediadata.php:67: // @TODO Find a better formular than this one ./inc/modules/guest/what-rallyes.php:99: // @TODO Reactivate this: $content['admin'] = '' . $content['login'] . ''; @@ -170,8 +169,7 @@ ./inc/modules/member/what-beg.php:63:// @TODO No more needed? define('__BEG_USERID_TIMEOUT', createFancyTime(getBegUseridTimeout())); ./inc/modules/member/what-logout.php:17: * @TODO Rewrite the code to a filter * ./inc/modules/member/what-logout.php:52: // @TODO Move this in a filter, e.g. member_logout -./inc/modules/member/what-order.php:459: // @TODO Rewrite this to a filter -./inc/modules/member/what-order.php:84: // @TODO Rewrite this to SQL_FETCHARRAY() +./inc/modules/member/what-order.php:463: // @TODO Rewrite this to a filter ./inc/modules/member/what-payout.php:208: // @TODO Rewrite this to a filter ./inc/modules/member/what-points.php:61:// @TODO Should we rewrite this to a filter? ./inc/modules/member/what-rallyes.php:99: // @TODO Reactivate this: $content['admin'] = '' . $content['login'] . ''; diff --git a/DOCS/doxygen/.htaccess b/DOCS/doxygen/.htaccess index 3a42882788..e69de29bb2 100644 --- a/DOCS/doxygen/.htaccess +++ b/DOCS/doxygen/.htaccess @@ -1 +0,0 @@ -Deny from all diff --git a/inc/classes/rdf.class.php b/inc/classes/rdf.class.php index 2e2aa980ce..6269c507ff 100644 --- a/inc/classes/rdf.class.php +++ b/inc/classes/rdf.class.php @@ -1296,7 +1296,7 @@ class fase4_rdf { { if (defined('__SECURITY') && function_exists('sendHttpGetRequest')) { // Use mailer-project instead (see http://mxchange.org) - $useable_data = sendHttpGetRequest($this->_remote_file, array(), TRUE); + return sendHttpGetRequest($this->_remote_file, array(), TRUE); } elseif ($this->_use_proxy == TRUE) { // we need a raw socket here to connect to proxy $fp = fsockopen($this->_phost,$this->_pport); diff --git a/inc/http-functions.php b/inc/http-functions.php index 6901f38feb..8bc96cd0b0 100644 --- a/inc/http-functions.php +++ b/inc/http-functions.php @@ -321,7 +321,7 @@ function sendRawRequest ($host, $request, $allowOnlyHttpOkay = TRUE) { $port = 80; // Initialize array - $response = array('', '', ''); + $response = array(); // Default is non-broken HTTP server implementation $GLOBALS['is_http_server_broken'] = FALSE; @@ -409,8 +409,11 @@ function sendRawRequest ($host, $request, $allowOnlyHttpOkay = TRUE) { // Get line from stream $line = fgets($resource, 128); - // Ignore empty lines because of non-blocking mode - if (empty($line)) { + /* + * Ignore empty lines because of non-blocking mode, you cannot use + * empty() here as it would also see \r\n as "empty". + */ + if (strlen($line) == 0) { // uslepp a little to avoid 100% CPU load usleep(10); @@ -425,7 +428,7 @@ function sendRawRequest ($host, $request, $allowOnlyHttpOkay = TRUE) { } // END - if // Add it to response - //* DEBUG: */ print 'line='.$line.'
'; + //* DEBUG: */ print 'line(' . strlen($line) . ')='.$line.'
'; array_push($response, $line); } // END - while @@ -438,22 +441,6 @@ function sendRawRequest ($host, $request, $allowOnlyHttpOkay = TRUE) { logDebugMessage(__FUNCTION__, __LINE__, 'Request took ' . (microtime(TRUE) - $start) . ' seconds and returned ' . count($response) . ' line(s).'); } // END - if - // Skip first empty lines - $resp = $response; - foreach ($resp as $idx => $line) { - // Trim space away - $line = trim($line); - - // Is this line empty? - if (empty($line)) { - // Then remove it - array_shift($response); - } else { - // Abort on first non-empty line - break; - } - } // END - foreach - //* DEBUG: */ debugOutput('Request:
'.print_r($request, TRUE).'
'); //* DEBUG: */ debugOutput('Response:
'.print_r($response, TRUE).'
'); @@ -589,6 +576,9 @@ function unchunkHttpResponse ($response) { // Merges HTTP header lines with given body (string) function mergeHttpHeadersWithBody ($body) { + // Add empty entry to mimic header->body + $GLOBALS['http_headers'][] = getConfig('HTTP_EOL'); + // Make sure at least one header is there (which is still not valid but okay here) assert((is_array($GLOBALS['http_headers'])) && (count($GLOBALS['http_headers']) > 0)); @@ -618,8 +608,14 @@ function removeHttpHeaderFromResponse ($response) { break; } // END - if - // Add full line to temporary global array - array_push($GLOBALS['http_headers'], $line); + // Is the last line set and is not ending with \r\n? + if ((isset($GLOBALS['http_headers'][count($GLOBALS['http_headers']) - 1])) && (substr($GLOBALS['http_headers'][count($GLOBALS['http_headers']) - 1], -2, 2) != getConfig('HTTP_EOL'))) { + // Add it to previous one + $GLOBALS['http_headers'][count($GLOBALS['http_headers']) - 1] .= $line; + } else { + // Add full line to temporary global array + array_push($GLOBALS['http_headers'], $line); + } } // END - foreach // Write back the array -- 2.39.5