From 2c38625920fa67d52ade11fd7d28cdb5373dc31c Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Thu, 31 Mar 2005 09:07:12 +0000 Subject: * merged the apt--main with the 2004 bwlimit tree Patches applied: * michael.vogt@canonical.com--2004/apt--bwlimit--0--base-0 tag of apt@packages.debian.org/apt--main--0--patch-47 * michael.vogt@canonical.com--2004/apt--bwlimit--0--patch-1 * fist attempt for bwlimit * michael.vogt@canonical.com--2004/apt--bwlimit--0--patch-2 * add a nanosleep, making it less cpu intensive * michael.vogt@canonical.com--2004/apt--bwlimit--0--patch-3 * use SingleInstance when DlLimit is activated * michael.vogt@canonical.com--2004/apt--bwlimit--0--patch-4 * cleanups, no code changes --- methods/http.cc | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) (limited to 'methods/http.cc') diff --git a/methods/http.cc b/methods/http.cc index 81a64d7a3..27f0dafef 100644 --- a/methods/http.cc +++ b/methods/http.cc @@ -58,6 +58,12 @@ unsigned long PipelineDepth = 10; unsigned long TimeOut = 120; bool Debug = false; + +unsigned long CircleBuf::BwReadLimit=0; +unsigned long CircleBuf::BwTickReadData=0; +struct timeval CircleBuf::BwReadTick={0,0}; +const unsigned int CircleBuf::BW_HZ=10; + // CircleBuf::CircleBuf - Circular input buffer /*{{{*/ // --------------------------------------------------------------------- /* */ @@ -65,6 +71,8 @@ CircleBuf::CircleBuf(unsigned long Size) : Size(Size), Hash(0) { Buf = new unsigned char[Size]; Reset(); + + CircleBuf::BwReadLimit = _config->FindI("Acquire::http::DlLimit",0)*1024; } /*}}}*/ // CircleBuf::Reset - Reset to the default state /*{{{*/ @@ -90,16 +98,45 @@ void CircleBuf::Reset() is non-blocking.. */ bool CircleBuf::Read(int Fd) { + unsigned long BwReadMax; + while (1) { // Woops, buffer is full if (InP - OutP == Size) return true; - + + // what's left to read in this tick + BwReadMax = CircleBuf::BwReadLimit/BW_HZ; + + if(CircleBuf::BwReadLimit) { + struct timeval now; + gettimeofday(&now,0); + + unsigned long d = (now.tv_sec-CircleBuf::BwReadTick.tv_sec)*1000000 + + now.tv_usec-CircleBuf::BwReadTick.tv_usec; + if(d > 1000000/BW_HZ) { + CircleBuf::BwReadTick = now; + CircleBuf::BwTickReadData = 0; + } + + if(CircleBuf::BwTickReadData >= BwReadMax) { + usleep(1000000/BW_HZ); + return true; + } + } + // Write the buffer segment int Res; - Res = read(Fd,Buf + (InP%Size),LeftRead()); + if(CircleBuf::BwReadLimit) { + Res = read(Fd,Buf + (InP%Size), + BwReadMax > LeftRead() ? LeftRead() : BwReadMax); + } else + Res = read(Fd,Buf + (InP%Size),LeftRead()); + if(Res > 0 && BwReadLimit > 0) + CircleBuf::BwTickReadData += Res; + if (Res == 0) return false; if (Res < 0) -- cgit v1.2.3 From 3573e286ba001ef30f4871f3ed2e17ea905d6404 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Wed, 8 Jun 2005 15:58:38 +0000 Subject: * merged with apt--main and apt--fixes Patches applied: * apt@packages.debian.org/apt--main--0--patch-80 Merge michael.vogt@ubuntu.com--2005/apt--fixes--0 * apt@packages.debian.org/apt--main--0--patch-81 Open 0.6.37 * apt@packages.debian.org/apt--main--0--patch-82 merge bubulle@debian.org--2005/apt--main--0 * apt@packages.debian.org/apt--main--0--patch-83 Update changelog * apt@packages.debian.org/apt--main--0--patch-84 Fix build of French man pages (now using XML, not SGML) * apt@packages.debian.org/apt--main--0--patch-85 Merge patch from Philippe Batailler for French man page build * apt@packages.debian.org/apt--main--0--patch-86 add Welsh translations from Dafydd Harries * apt@packages.debian.org/apt--main--0--patch-87 Update changelog * apt@packages.debian.org/apt--misc-abi-changes--0--patch-4 Merge from mainline * apt@packages.debian.org/apt--misc-abi-changes--0--patch-5 Merge from mainline * apt@packages.debian.org/apt--misc-abi-changes--0--patch-6 Collapse both pkgAcquire::Run() methods into one, with a default value * bubulle@debian.org--2005/apt--main--0--patch-66 Italian translation complete * bubulle@debian.org--2005/apt--main--0--patch-67 Sync with Matt * bubulle@debian.org--2005/apt--main--0--patch-68 Sync with Matt * bubulle@debian.org--2005/apt--main--0--patch-69 Sync with Matt * bubulle@debian.org--2005/apt--main--0--patch-70 Re-generate the POT and PO files from sources * bubulle@debian.org--2005/apt--main--0--patch-71 Update French translation * bubulle@debian.org--2005/apt--main--0--patch-72 Merge with Matt * bubulle@debian.org--2005/apt--main--0--patch-73 Basque translation update * bubulle@debian.org--2005/apt--main--0--patch-74 Hebres translation update * bubulle@debian.org--2005/apt--main--0--patch-75 Merge with Matt * bubulle@debian.org--2005/apt--main--0--patch-76 Correct the Hebrew translation for #306658 * bubulle@debian.org--2005/apt--main--0--patch-77 Update French man pages translations * bubulle@debian.org--2005/apt--main--0--patch-78 Merge with Matt * bubulle@debian.org--2005/apt--main--0--patch-79 Correct syntax errors in Hebrew translation * bubulle@debian.org--2005/apt--main--0--patch-80 Revert changes to debian/changelog and debian/apt.cron.daily * bubulle@debian.org--2005/apt--main--0--patch-81 Portuguese translation update * daf@muse.19inch.net--2005/apt--main--0--base-0 tag of apt@packages.debian.org/apt--main--0--patch-85 * daf@muse.19inch.net--2005/apt--main--0--patch-1 add Welsh translation * michael.vogt@ubuntu.com--2005/apt--fixes--0--base-0 tag of apt@packages.debian.org/apt--main--0--patch-79 * michael.vogt@ubuntu.com--2005/apt--fixes--0--patch-1 * merged obvious fixes into the tree to make it easy for matt to merge * michael.vogt@ubuntu.com--2005/apt--fixes--0--patch-2 * more merges from otavio that looks good/uncritical * michael.vogt@ubuntu.com--2005/apt--fixes--0--patch-3 * merged Matts misc-abi-changes tree * michael.vogt@ubuntu.com--2005/apt--fixes--0--patch-4 * finalized the changelog for a ubuntu build * michael.vogt@ubuntu.com--2005/apt--fixes--0--patch-5 * merged with apt--main--0 * michael.vogt@ubuntu.com--2005/apt--fixes--0--patch-6 * build fix for apt--main--0 * michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-26 * fix the cache-control header generation * otavio@debian.org--2005/apt--fixes--0--base-0 tag of apt@packages.debian.org/apt--main--0--patch-71 * otavio@debian.org--2005/apt--fixes--0--patch-1 Fix comments about the need of xmlto * otavio@debian.org--2005/apt--fixes--0--patch-2 Fix a compile warning * otavio@debian.org--2005/apt--fixes--0--patch-3 Sync with apt--main--0--patch-76 * otavio@debian.org--2005/apt--fixes--0--patch-4 Sync with apt--main--0--patch-78 * otavio@debian.org--2005/apt--fixes--0--patch-5 Add fixes that was wrongly included on DDTP changes. * otavio@debian.org--2005/apt--fixes--0--patch-8 Add information about the other fixes include on this branch now. * otavio@debian.org--2005/apt--fixes--0--patch-9 Merge last changes from apt--main--0. * otavio@debian.org--2005/apt--fixes--0--patch-10 Fix warnings about min/max change in gcc-4.0 * otavio@debian.org--2005/apt--fixes--0--patch-11 Fix remaning warnings while compiling gcc-4.0 * otavio@debian.org--2005/apt--fixes--0--patch-12 Add changelog entry about the fixes for warnings while compiling using GCC 4.0 compiler. * philippe.batailler@free.fr--2005/apt--mainBubulle--0.1--patch-1 Passage sous arch * philippe.batailler@free.fr--2005/apt--mainMatt--0--patch-1 fix xml error --- methods/http.cc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'methods/http.cc') diff --git a/methods/http.cc b/methods/http.cc index 27f0dafef..2ec1fe631 100644 --- a/methods/http.cc +++ b/methods/http.cc @@ -672,9 +672,9 @@ void HttpMethod::SendReq(FetchItem *Itm,CircleBuf &Out) and a no-store directive for archives. */ sprintf(Buf,"GET %s HTTP/1.1\r\nHost: %s\r\n", Itm->Uri.c_str(),ProperHost.c_str()); - if (_config->FindB("Acquire::http::No-Cache",false) == true) - strcat(Buf,"Cache-Control: no-cache\r\nPragma: no-cache\r\n"); - else + // only generate a cache control header if we actually want to + // use a cache + if (_config->FindB("Acquire::http::No-Cache",false) == false) { if (Itm->IndexFile == true) sprintf(Buf+strlen(Buf),"Cache-Control: max-age=%u\r\n", @@ -686,6 +686,10 @@ void HttpMethod::SendReq(FetchItem *Itm,CircleBuf &Out) } } } + // generate a no-cache header if needed + if (_config->FindB("Acquire::http::No-Cache",false) == true) + strcat(Buf,"Cache-Control: no-cache\r\nPragma: no-cache\r\n"); + string Req = Buf; -- cgit v1.2.3 From cec6091772ae3463cb04c417e3f598f9b6814516 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Mon, 17 Oct 2005 14:33:58 +0000 Subject: * removed the URL-Reamp hack (we have pdiff support in the main archive now), removed bw-limit support (NO idea how that got into this archive in the first place) --- methods/http.cc | 38 +------------------------------------- 1 file changed, 1 insertion(+), 37 deletions(-) (limited to 'methods/http.cc') diff --git a/methods/http.cc b/methods/http.cc index 2ec1fe631..e2337a9ba 100644 --- a/methods/http.cc +++ b/methods/http.cc @@ -59,11 +59,6 @@ unsigned long TimeOut = 120; bool Debug = false; -unsigned long CircleBuf::BwReadLimit=0; -unsigned long CircleBuf::BwTickReadData=0; -struct timeval CircleBuf::BwReadTick={0,0}; -const unsigned int CircleBuf::BW_HZ=10; - // CircleBuf::CircleBuf - Circular input buffer /*{{{*/ // --------------------------------------------------------------------- /* */ @@ -71,8 +66,6 @@ CircleBuf::CircleBuf(unsigned long Size) : Size(Size), Hash(0) { Buf = new unsigned char[Size]; Reset(); - - CircleBuf::BwReadLimit = _config->FindI("Acquire::http::DlLimit",0)*1024; } /*}}}*/ // CircleBuf::Reset - Reset to the default state /*{{{*/ @@ -98,45 +91,16 @@ void CircleBuf::Reset() is non-blocking.. */ bool CircleBuf::Read(int Fd) { - unsigned long BwReadMax; - while (1) { // Woops, buffer is full if (InP - OutP == Size) return true; - // what's left to read in this tick - BwReadMax = CircleBuf::BwReadLimit/BW_HZ; - - if(CircleBuf::BwReadLimit) { - struct timeval now; - gettimeofday(&now,0); - - unsigned long d = (now.tv_sec-CircleBuf::BwReadTick.tv_sec)*1000000 + - now.tv_usec-CircleBuf::BwReadTick.tv_usec; - if(d > 1000000/BW_HZ) { - CircleBuf::BwReadTick = now; - CircleBuf::BwTickReadData = 0; - } - - if(CircleBuf::BwTickReadData >= BwReadMax) { - usleep(1000000/BW_HZ); - return true; - } - } - // Write the buffer segment int Res; - if(CircleBuf::BwReadLimit) { - Res = read(Fd,Buf + (InP%Size), - BwReadMax > LeftRead() ? LeftRead() : BwReadMax); - } else - Res = read(Fd,Buf + (InP%Size),LeftRead()); + Res = read(Fd,Buf + (InP%Size),LeftRead()); - if(Res > 0 && BwReadLimit > 0) - CircleBuf::BwTickReadData += Res; - if (Res == 0) return false; if (Res < 0) -- cgit v1.2.3 From 927c393f1305925c1456c931e1e7b45afd6f051d Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Sun, 23 Oct 2005 11:12:54 +0000 Subject: * added http data corruption fix patch (#280844) --- methods/http.cc | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) (limited to 'methods/http.cc') diff --git a/methods/http.cc b/methods/http.cc index e2337a9ba..dbf2d1b43 100644 --- a/methods/http.cc +++ b/methods/http.cc @@ -205,28 +205,23 @@ bool CircleBuf::WriteTillEl(string &Data,bool Single) if (Buf[I%Size] != '\n') continue; ++I; - if (I < InP && Buf[I%Size] == '\r') - ++I; if (Single == false) { - if (Buf[I%Size] != '\n') - continue; - ++I; if (I < InP && Buf[I%Size] == '\r') ++I; + if (I >= InP || Buf[I%Size] != '\n') + continue; + ++I; } - if (I > InP) - I = InP; - Data = ""; while (OutP < I) { unsigned long Sz = LeftWrite(); if (Sz == 0) return false; - if (I - OutP < LeftWrite()) + if (I - OutP < Sz) Sz = I - OutP; Data += string((char *)(Buf + (OutP%Size)),Sz); OutP += Sz; -- cgit v1.2.3