The Bay Area just experienced a moderate earthquake. This felt stronger than any others that I’ve experienced in the 12 years that I’ve lived here. Still it wasn’t bad and we had no discernible damage.

HTTP Proxy Client


HTTP Proxy Client is the small set of libraries and scripts, which provides transparent access to Internet via HTTP proxy for programs, which uses TCP/IP for communication.

The list of programs includes: telnet, ftp, licq, cvs, smth else? Project implements dynamic library, that can be preloaded before program run. The library substitutes some system calls (connect(), gethostbyaddr(), gethostbyname()), with calls, which makes TCP/IP connection through HTTP proxy. This allows client programs behind HTTP proxy work with Internet without limitations.

Sort of like tsocks (which I’ve blogged about before), but for an HTTP proxy rather than a SOCKS proxy.

I have everything working through our proxy at work. These days most programs are pretty good about respecting the http_proxy environment variable, and then some others have their own funky configuration like Firefox, Eclipse, and Subversion (see here). I’m jotting down a note about httppc, because I’m sure that now I’ve said that all my programs work through the proxy, I will soon find one that doesn’t and will be searching for something like this.

Possible fix for using apt through a broken HTTP proxy

Seen on a work email list. A possible solution to the problem where files downloaded through apt-get on Ubuntu at work (where we have a squid HTTP proxy) periodically get corrupted.

Put the following in apt.conf:

Acquire::http::Pipeline-Depth "0";

Quote from man apt.conf:

One setting is provided to control the pipeline depth in cases where the remote server is not RFC conforming or buggy (such as Squid 2.0.2) Acquire::http::Pipeline-Depth can be a value from 0 to 5 indicating how many outstanding requests APT should send. A value of zero MUST be specified if the remote host does not properly linger on TCP connections – otherwise data corruption will occur. Hosts which require this are in violation of RFC 2068.