RSS update and caching broken for some feeds MDL-7045; merged from MOODLE_17_STABLE

This commit is contained in:
skodak 2006-10-17 07:09:18 +00:00
parent d543939cd9
commit a32a53d2a4
2 changed files with 21 additions and 7 deletions

View file

@ -2,4 +2,17 @@ This folder is the MagpieRSS news feed client library
http://magpierss.sourceforge.net/
Moodle's rss_client block uses these libraries to download, parse and cache remote new feeds.
Magpie version 0.72 added to Moodle 1.6dev on 20051213
Magpie version 0.72 added to Moodle 1.6dev on 20051213
=============================================================
Changes - see MDL-7045:
* ETag and Last-Modified http field names are not case sensitive anymore - should improve caching
* Fixed some minor undefined warnings
* Tralining newlines are stripped from ETag and Last-Modified headers (discovered by Matthew Bockol),
we should be sending valid headers when fetching feed updates now, yay!
Fixes not reported upstream yet.
skodak
16 October 2006

View file

@ -163,7 +163,7 @@ function fetch_rss ($url, $postdata=null) {
// setup headers
if ( $cache_status == 'STALE' ) {
$rss = $cache->get( $cache_key );
if ( $rss and $rss->etag and $rss->last_modified ) {
if ( $rss and !empty($rss->etag) and !empty($rss->last_modified) ) { // moodle fixes
$request_headers['If-None-Match'] = $rss->etag;
$request_headers['If-Last-Modified'] = $rss->last_modified;
}
@ -318,14 +318,15 @@ function _response_to_rss ($resp) {
$field = $h;
$val = "";
}
if ( $field == 'ETag' ) {
$rss->etag = $val;
// start of moodle modification
if ( strtolower($field) == 'etag' ) { // field names are case insensitive - sites are sending Etag, ETag, etc.
$rss->etag = rtrim($val); // trailing newline problem discovered by Matthew Bockol
}
if ( $field == 'Last-Modified' ) {
$rss->last_modified = $val;
if ( strtolower($field) == 'last-modified' ) { // field names are case insensitive
$rss->last_modified = rtrim($val); // we do not want any whitespace after it
}
// end of moodle modification
}
return $rss;