Author: dmacvicar Date: Wed May 21 19:02:02 2008 New Revision: 10178 URL: http://svn.opensuse.org/viewcvs/zypp?rev=10178&view=rev Log: - dont check for existence of keys but provde a way to retrieve optional files, in order to avoid a HEAD request. related to bnc#381280 Modified: trunk/libzypp/zypp/Fetcher.cc trunk/libzypp/zypp/MediaSetAccess.cc trunk/libzypp/zypp/MediaSetAccess.h trunk/libzypp/zypp/repo/susetags/Downloader.cc trunk/libzypp/zypp/repo/yum/Downloader.cc Modified: trunk/libzypp/zypp/Fetcher.cc URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/Fetcher.cc?rev=10178&r1=10177&r2=10178&view=diff ============================================================================== --- trunk/libzypp/zypp/Fetcher.cc (original) +++ trunk/libzypp/zypp/Fetcher.cc Wed May 21 19:02:02 2008 @@ -213,6 +213,14 @@ catch (Exception & excpt_r) { ZYPP_CAUGHT(excpt_r); + + // do not error on optional files + if ((*it_res)->location.optional() ) + { + MIL << "Skipping optional file " << (*it_res)->location << endl; + continue; + } + excpt_r.remember("Can't provide " + (*it_res)->location.filename().asString() + " : " + excpt_r.msg()); ZYPP_RETHROW(excpt_r); } Modified: trunk/libzypp/zypp/MediaSetAccess.cc URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/MediaSetAccess.cc?rev=10178&r1=10177&r2=10178&view=diff ============================================================================== --- trunk/libzypp/zypp/MediaSetAccess.cc (original) +++ trunk/libzypp/zypp/MediaSetAccess.cc Wed May 21 19:02:02 2008 @@ -69,16 +69,6 @@ } } -// callback::SendReportsource::DownloadFileReport report; -// DownloadProgressFileReceiver download_report( report ); -// SourceFactory source_factory; -// Url file_url( url().asString() + file_r.asString() ); -// report->start( source_factory.createFrom(this), file_url ); -// callback::TempConnectmedia::DownloadProgressReport tmp_download( download_report ); -// Pathname file = provideJustFile( file_r, media_nr, cached, checkonly ); -// report->finish( file_url, source::DownloadFileReport::NO_ERROR, "" ); -// return file; - void MediaSetAccess::releaseFile( const OnMediaLocation & on_media_file ) { releaseFile( on_media_file.filename(), on_media_file.medianr() ); @@ -101,13 +91,23 @@ Pathname MediaSetAccess::provideFile( const OnMediaLocation & on_media_file ) { - return provideFile( on_media_file.filename(), on_media_file.medianr() ); + // if the file is optional we don't want a retry, ignore, abort + // callback, but just abort inmediately if it does not exist + // therefore we pass checkonly true + if (on_media_file.optional() ) + return provideFileInternal( on_media_file.filename(), + on_media_file.medianr(), + true, true); + + return provideFileInternal( on_media_file.filename(), + on_media_file.medianr(), + true, false ); } Pathname MediaSetAccess::provideFile(const Pathname & file, unsigned media_nr ) { - return provideFileInternal( file, media_nr, false, false); + return provideFileInternal( file, media_nr, false, false ); } bool MediaSetAccess::doesFileExist(const Pathname & file, unsigned media_nr ) Modified: trunk/libzypp/zypp/MediaSetAccess.h URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/MediaSetAccess.h?rev=10178&r1=10177&r2=10178&view=diff ============================================================================== --- trunk/libzypp/zypp/MediaSetAccess.h (original) +++ trunk/libzypp/zypp/MediaSetAccess.h Wed May 21 19:02:02 2008 @@ -113,6 +113,11 @@ * \param on_media_file location of the file on media * \return local pathname of the requested file * + * If \p on_media_file is marked as optional, then + * in case of failure the user interaction callbacks + * will be ignored and the exception will throw + * inmediately. + * * \throws MediaException if a problem occurs, * see \ref media::MediaManager::provideFile() */ Modified: trunk/libzypp/zypp/repo/susetags/Downloader.cc URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/repo/susetags/Downloader.cc?rev=10178&r1=10177&r2=10178&view=diff ============================================================================== --- trunk/libzypp/zypp/repo/susetags/Downloader.cc (original) +++ trunk/libzypp/zypp/repo/susetags/Downloader.cc Wed May 21 19:02:02 2008 @@ -49,24 +49,22 @@ SignatureFileChecker sigchecker; Pathname sig = _path + "/content.asc"; - if ( media.doesFileExist(sig) ) - { - this->enqueue( OnMediaLocation( sig, 1 ) ); - this->start( dest_dir, media ); - this->reset(); - sigchecker = SignatureFileChecker( dest_dir + sig ); - } + this->enqueue( OnMediaLocation( sig, 1 ).setOptional(true) ); + this->start( dest_dir, media ); + this->reset(); + + if ( PathInfo(dest_dir + sig).isExist() ) + sigchecker = SignatureFileChecker( dest_dir + sig ); Pathname key = _path + "/content.key"; - if ( media.doesFileExist(key) ) - { - this->enqueue( OnMediaLocation( key, 1 ) ); - this->start( dest_dir, media ); - this->reset(); - sigchecker.addPublicKey(dest_dir + key); - } + // the key may not exist + this->enqueue( OnMediaLocation( key, 1 ).setOptional(true) ); + this->start( dest_dir, media ); + this->reset(); + if ( PathInfo(dest_dir + key).isExist() ) + sigchecker.addPublicKey(dest_dir + key); this->enqueue( OnMediaLocation( _path + "/content", 1 ), sigchecker ); this->start( dest_dir, media ); Modified: trunk/libzypp/zypp/repo/yum/Downloader.cc URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/repo/yum/Downloader.cc?rev=10178&r1=10177&r2=10178&view=diff ============================================================================== --- trunk/libzypp/zypp/repo/yum/Downloader.cc (original) +++ trunk/libzypp/zypp/repo/yum/Downloader.cc Wed May 21 19:02:02 2008 @@ -107,24 +107,23 @@ SignatureFileChecker sigchecker; - if ( _media_ptr->doesFileExist(sigpath) ) - { - this->enqueue( OnMediaLocation(sigpath,1).setOptional(true) ); - this->start( dest_dir, *_media_ptr); - this->reset(); - sigchecker = SignatureFileChecker(dest_dir + sigpath); - } - - - if ( _media_ptr->doesFileExist(keypath) ) - { - this->enqueue( OnMediaLocation(keypath,1).setOptional(true) ); - this->start( dest_dir, *_media_ptr); - this->reset(); - sigchecker.addPublicKey(dest_dir + keypath); - } + // this file is optional, may be the signature is not there + this->enqueue( OnMediaLocation(sigpath,1).setOptional(true) ); + this->start( dest_dir, *_media_ptr); + this->reset(); + + // only need a checker if the signature exist. + if ( PathInfo(dest_dir + sigpath).isExist() ) + sigchecker = SignatureFileChecker(dest_dir + sigpath); + + // the key path may also not be there + this->enqueue( OnMediaLocation(keypath,1).setOptional(true) ); + this->start( dest_dir, *_media_ptr); + this->reset(); + + if ( PathInfo(dest_dir + keypath).isExist() ) + sigchecker.addPublicKey(dest_dir + keypath); - this->start( dest_dir, *_media_ptr ); if ( ! progress.tick() ) -- To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org For additional commands, e-mail: zypp-commit+help@opensuse.org