Your message dated Mon, 30 Jun 2014 13:42:50 +0200
with message-id <[email protected]>
and subject line Re: Bug#737768: apt-cacher-ng: fails to download files whose 
name consists of the percent character
has caused the Debian Bug report #737768,
regarding apt-cacher-ng: fails to download files whose name consists of the 
percent character
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
737768: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=737768
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: apt-cacher-ng
Version: 0.7.25-1
Severity: normal
Tags: upstream patch

Dear Maintainer,

I use apt-cacher-ng to cache debdelta files.  These files are stored
with percent-encoded file names on the server. For example:

    dict-wn_1%3a3.0-31_1%3a3.0-32_all.debdelta

When requesting this file, the URL must be escaped as:

    
http://debdeltas.debian.net/debian-deltas/pool/main/w/wordnet/dict-wn_1%253a3.0-31_1%253a3.0-32_all.debdelta

Unfortunately, this request fails when using apt-cacher-ng as a proxy.
Using other proxies, like polipo, works as expected.  Although,
apt-cacher-ng will work when the percent character is escaped twice,
for example:

    
http://debdeltas.debian.net/debian-deltas/pool/main/w/wordnet/dict-wn_1%25253a3.0-31_1%25253a3.0-32_all.debdelta

This is the incorrect behaviour, however.

I have included a patch that fixes this problem.


-- Package-specific info:

-- System Information:
Debian Release: jessie/sid
  APT prefers unstable
  APT policy: (990, 'unstable'), (500, 'testing')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.10-3-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages apt-cacher-ng depends on:
ii  adduser                3.113+nmu3
ii  debconf [debconf-2.0]  1.5.52
ii  dpkg                   1.17.6
ii  init-system-helpers    1.14
ii  libbz2-1.0             1.0.6-5
ii  libc6                  2.17-97
ii  libgcc1                1:4.8.2-14
ii  liblzma5               5.1.1alpha+20120614-2
ii  libssl1.0.0            1.0.1f-1
ii  libstdc++6             4.8.2-14
ii  libwrap0               7.6.q-25
ii  zlib1g                 1:1.2.8.dfsg-1

Versions of packages apt-cacher-ng recommends:
ii  avahi-daemon  0.6.31-4
ii  ed            1.9-2

Versions of packages apt-cacher-ng suggests:
ii  curl      7.35.0-1
ii  doc-base  0.10.5
ii  libfuse2  2.9.2-4
ii  wget      1.15-1

-- Configuration Files:
/etc/apt-cacher-ng/acng.conf changed:
CacheDir: /var/cache/apt-cacher-ng
LogDir: /var/log/apt-cacher-ng
Port:3142
BindAddress: 192.168.0.1
Remap-debrep: file:deb_mirror*.gz file:deb_mirrors /debian ; 
file:backends_debian # Debian Archives
Remap-uburep: file:ubuntu_mirrors security.ubuntu.com/ubuntu /ubuntu ; 
file:backends_ubuntu # Ubuntu Archives
Remap-debvol: file:debvol_mirror*.gz /debian-volatile ; file:backends_debvol # 
Debian Volatile Archives
Remap-debmul: file:debmul_mirrors /debian-multimedia ; file:backends_debmul
Remap-medibuntu: file:medibuntu_mirrors /medibuntu ; file:backends_medibuntu
Remap-getdeb: file:getdeb_mirrors /getdeb ; file:backends_getdeb
Remap-mate: http://packages.mate-desktop.org/repo/
Remap-opera: http://deb.opera.com/opera/
Remap-cygwin: file:cygwin_mirrors /cygwin # ; file:backends_cygwin # 
incomplete, please create this file or specify preferred mirrors here
Remap-sfnet:  file:sfnet_mirrors http://downloads.sourceforge.net/ # ; 
file:backends_sfnet # incomplete, please create this file or specify preferred 
mirrors here
Remap-alxrep: file:archlx_mirrors /archlinux # ; file:backend_archlx # Arch 
Linux
Remap-fedora:  file:fedora_mirrors # Fedora Linux
Remap-epel:   file:epel_mirrors # Fedora EPEL
Remap-slrep:  file:sl_mirrors # Scientific Linux
Remap-gentoo: file:gentoo_mirrors.gz /gentoo ; file:backends_gentoo # Gentoo 
Archives
Remap-debdeltas: file:debdeltas_mirrors
Remap-linuxmint: file:linuxmint_mirrors # ; file:backends_linuxmint
Remap-static/dropbox: file:dropbox_mirrors
Remap-static/openwrt: http://downloads.openwrt.org/
Remap-static/microsoft: file:microsoft_mirrors
Remap-static/windowsupdate: file:windowsupdate_mirrors
Remap-static/adobe: file:adobe_mirrors
Remap-static/apple: file:apple_mirrors
Remap-static/autopatcher: http://www.autopatcher.com/
Remap-static/playonlinux: http://repository.playonlinux.com/
Remap-static/avast: http://files.avast.com/
ReportPage: acng-report.html
ExTreshold: 4
VfilePattern = 
(^|.*/)(Index|Packages(\.gz|\.bz2|\.lzma|\.xz)?|InRelease|Release|Release\.gpg|custom\.gpg|mirrors.txt|Sources(\.gz|\.bz2|\.lzma|\.xz)?|release|index\.db-.*\.gz|Contents-[^/]*(\.gz|\.bz2|\.lzma|\.xz)?|pkglist[^/]*\.bz2|rclist[^/]*\.bz2|meta-release[^/]*|Translation[^/]*(\.gz|\.bz2|\.lzma|\.xz)?|MD5SUMS|SHA1SUMS|((setup|setup-legacy)(\.ini|\.bz2|\.hint)(\.sig)?)|mirrors\.lst|repo(index|md)\.xml(\.asc|\.key)?|directory\.yast|products|content(\.asc|\.key)?|media|filelists\.xml\.gz|filelists\.sqlite\.bz2|repomd\.xml|packages\.[a-zA-Z][a-zA-Z]\.gz|info\.txt|license\.tar\.gz|license\.zip|.*\.(db|files|abs)(\.tar(\.gz|\.bz2|\.lzma|\.xz))?|metalink\?repo|.*prestodelta\.xml\.gz|repodata/.*\.(xml|sqlite)(\.gz|\.bz2|\.lzma|\.xz))$|/dists/.*/installer-[^/]+/[^0-9][^/]+/images/.*|^.*(\.vps|\.md5|\.exe|\.cab|\.msi|\.zip|\.bin|\.psf|\.7z|\.iso|\.msu|\.apf|\.pdf|\.swf|\.f4v|\.flv|\.xml|\.png|\.dae|\.jpg|\.css|\.js|\.gif|\.wof|\.apm)$
WfilePattern = 
(^|.*/)(Release|InRelease|Release\.gpg|custom\.gpg|(Packages|Sources)(\.gz|\.bz2|\.lzma|\.xz)?|Translation[^/]*(\.gz|\.bz2|\.lzma|\.xz)?|MD5SUMS|SHA1SUMS|.*\.xml|.*\.(db|files|abs)(\.tar(\.gz|\.bz2|\.lzma|\.xz))?|[a-z]+32.exe)$|/dists/.*/installer-.*/images/.*|^static/.*
Debug:4
RecompBz2: 1
DontCache: carlitos 192.168.0.1
DirPerms: 02755
FilePerms: 00644
LocalDirs: acng-doc /usr/share/doc/apt-cacher-ng
PassThroughPattern: private-ppa\.launchpad\.net:443$

/etc/apt-cacher-ng/security.conf [Errno 13] Permission denied: 
u'/etc/apt-cacher-ng/security.conf'
/etc/default/apt-cacher-ng changed:
umask 022
DAEMON_OPTS=" -c /etc/apt-cacher-ng "


-- debconf information:
  apt-cacher-ng/bindaddress: keep
  apt-cacher-ng/proxy: keep
  apt-cacher-ng/port: keep
  apt-cacher-ng/gentargetmode: No automated setup
  apt-cacher-ng/cachedir: keep
>From 71ffcdd7e62e48e2869c6c161c5401ae980dfbc6 Mon Sep 17 00:00:00 2001
From: Carlos Maddela <[email protected]>
Date: Thu, 6 Feb 2014 03:32:22 +1100
Subject: handle percent-encoding of percent character

Description: Handle requests that require percent-encoding of the
percent character correctly.
Patch-Name: handle-percent-encoding-of-percent-character.patch
---
 include/meta.h  | 2 +-
 source/dlcon.cc | 2 +-
 source/job.cc   | 2 +-
 source/meta.cc  | 4 ++--
 4 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/include/meta.h b/include/meta.h
index cc4a52d..665d093 100644
--- a/include/meta.h
+++ b/include/meta.h
@@ -162,7 +162,7 @@ bool ParseKeyValLine(const mstring & sIn, mstring & sOutKey, mstring & sOutVal);
 class tHttpUrl
 {
 public:
-	bool SetHttpUrl(cmstring &uri);
+	bool SetHttpUrl(cmstring &uri, bool unescape = true);
 	mstring ToURI(bool bEscaped) const;
 	mstring sHost, sPath, sUserPass;
 	bool bIsTransferlEncoded;
diff --git a/source/dlcon.cc b/source/dlcon.cc
index 86f836f..dc27746 100644
--- a/source/dlcon.cc
+++ b/source/dlcon.cc
@@ -134,7 +134,7 @@ struct tDlJob
 		mstring s;
 		for (const char *p = pNewUrl; *p; ++p)
 		{
-			if (isspace((unsigned char) *p))
+			if (isspace((unsigned char) *p) || *p == '%')
 			{
 				s += "%";
 				s += BytesToHexString((uint8_t*) p, 1);
diff --git a/source/job.cc b/source/job.cc
index 16a0e0a..ac99407 100644
--- a/source/job.cc
+++ b/source/job.cc
@@ -526,7 +526,7 @@ void job::PrepareDownload() {
 		if (0==sReqPath.compare(0, 11, "apt-cacher/"))
 		sReqPath.erase(11);
 		
-		if(!tUrl.SetHttpUrl(sReqPath))
+		if(!tUrl.SetHttpUrl(sReqPath, false))
 		{
 			m_sMaintCmd="/";
 			return;
diff --git a/source/meta.cc b/source/meta.cc
index 6f5b138..8e139b2 100644
--- a/source/meta.cc
+++ b/source/meta.cc
@@ -194,7 +194,7 @@ bool ParseKeyValLine(const string & sIn, string & sOutKey, string & sOutVal)
 }
 
 
-bool tHttpUrl::SetHttpUrl(cmstring &sUrlRaw)
+bool tHttpUrl::SetHttpUrl(cmstring &sUrlRaw, bool unescape)
 {
 	sPort.clear();
 	sHost.clear();
@@ -205,7 +205,7 @@ bool tHttpUrl::SetHttpUrl(cmstring &sUrlRaw)
 #endif
 	bIsTransferlEncoded=false;
 	
-	mstring url = UrlUnescape(sUrlRaw);
+	mstring url = unescape ? UrlUnescape(sUrlRaw) : sUrlRaw;
 
 	trimBack(url);
 	trimFront(url);

--- End Message ---
--- Begin Message ---
Version: 0.7.26-1

* Carlos Maddela [Thu, Feb 06 2014, 07:06:41AM]:
> Package: apt-cacher-ng
> Version: 0.7.25-1
> Severity: normal
> Tags: upstream patch

Ehm, applied before, not closed by mistake, closing now.

Regards,
Eduard.

--- End Message ---

Reply via email to