Bug 198772 - Problem with pkg behind a chunking proxy
Summary: Problem with pkg behind a chunking proxy
Status: Closed FIXED
Alias: None
Product: Base System
Classification: Unclassified
Component: misc (show other bugs)
Version: 10.1-RELEASE
Hardware: Any Any
: --- Affects Only Me
Assignee: freebsd-bugs (Nobody)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-03-21 14:03 UTC by sg-ball
Modified: 2017-04-29 10:31 UTC (History)
0 users

See Also:


Attachments
Python proxy to confirm the bug or be used as a workaround (5.19 KB, text/plain)
2015-03-21 14:03 UTC, sg-ball
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description sg-ball 2015-03-21 14:03:40 UTC
Created attachment 154629 [details]
Python proxy to confirm the bug or be used as a workaround

I have a freshly installed FreeBSD 10.1 at work in a VM. As it is behind a corporate proxy, I had to set HTTP_PROXY in environment and it began to run fine.

But no way to get pkg to work correctly. I installed it from ports, still same issue :

root@FriBi:~ # pkg update -f
Updating FreeBSD repository catalogue...
pkg: repository meta /var/db/pkg/FreeBSD.meta has wrong version or wrong format
Fetching meta.txz:   0%
pkg: No signature found
pkg: repository FreeBSD has no meta file, using default settings
Fetching packagesite.txz:   0%
pkg: No signature found
pkg: Unable to update repository FreeBSD
root@FriBi:~ #

I was finally able to by-pass the proxy ... and it immediately runned fine ... So I tried to analyze the HTTP dialog. The corporate proxy always sends its responses with Transfer-Encoding: chunked which I suspected to be the cause. I could even confirm it by using a minimal Python proxy that :

    get the response from the corporate proxy with readall() buffering the whole file
    send it back with a ContentLength header to its client (here pkg)

and then again it worked (I could do pkg install xorg ...)

Steps to reproduce :
- use the attached python prog as a proxy with the -C flag to make it chunk its responses
- configure the pkg system to use that proxy
- try to use pkg update -f

Workaround :
- use the attached python prog as a proxy with the -c flag to make it un-chunk its responses

BEWARE : the attached Python file is not thoroughly tested and should not be used except to confirm the bug or as a last hope workaround
Comment 1 sg-ball 2015-04-03 10:26:11 UTC
The problem was discussed in mailing list at https://lists.freebsd.org/pipermail/freebsd-pkg/2015-March/000979.html. It was confirmed to be a bug and a patch 
has been submitted.
Comment 2 sg-ball 2017-04-29 10:31:05 UTC
The proposed patch has been used to fix the issue...