Updated to make a release
diff --git a/CHANGELOG b/CHANGELOG
index 67563c1..8138c04 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,9 +1,16 @@
-0.X.0
+0.4.0
 
-   XXX
+   Added support for proxies if the Socksipy module is installed.
+
+   Fixed bug with some HEAD responses having content-length set to 
+   zero incorrectly.
+
+   Fixed most except's to catch a specific exception.
 
    Added 'connection_type' parameter to Http.request().
-
+ 
+   The default for 'force_exception_to_status_code' was changed to False. Defaulting
+   to True was causing quite a bit of confusion.
 
 
 0.3.0
diff --git a/Makefile b/Makefile
index 87ff0a5..12ca5ce 100644
--- a/Makefile
+++ b/Makefile
@@ -3,3 +3,5 @@
 doc:
 	#pudge -v -f --modules=httplib2 --dest=build/doc 
 	/usr/lib/python2.5/doc/tools/mkhowto --html ref.tex
+register:
+	python setup.py register
diff --git a/libhttplib2.tex b/libhttplib2.tex
index a2b5190..4f93e29 100644
--- a/libhttplib2.tex
+++ b/libhttplib2.tex
@@ -76,6 +76,8 @@
     Automatically follows 3XX redirects on GETs.
 \item[Compression]
     Handles both 'deflate' and 'gzip' types of compression.
+\item[Proxies]
+    If the Socksipy module is installed then httplib2 can handle sock4, sock5 and http proxies.
 \item[Lost update support]
     Automatically adds back ETags into PUT requests to resources we have already cached. This implements Section 3.2 of Detecting the Lost Update Problem Using Unreserved Checkout
 \end{description}
@@ -157,12 +159,15 @@
 %  memberdesc	- data members, like datadesc, but with an optional
 %		  type name like methoddesc.
 
-\begin{classdesc}{Http}{\optional{cache=None}, \optional{timeout=None}}
+\begin{classdesc}{Http}{\optional{cache=None}, \optional{timeout=None}, \optional{proxy_info=None}}
 The class that represents a client HTTP interface.
 The \var{cache} parameter is either the name of a directory
 to be used as a flat file cache, or it must an object that 
 implements the required caching interface.
 The \var{timeout} parameter is the socket level timeout.
+The \var{proxy_info} is an instance of \class{ProxyInfo} and is supplied
+if a proxy is to be used. Note that the Socksipy module must be
+installed for proxy support to work.
 \end{classdesc}
 
 \begin{classdesc}{Response}{info}
@@ -183,6 +188,14 @@
 into the constructor of \class{Http}.
 \end{classdesc}
 
+\begin{classdesc}{ProxyInfo}{proxy_type, proxy_host, proxy_port, \optional{proxy_rdns=None}, \optional{proxy_user=None}, \optional{proxy_pass=None}}
+The parameter \var{proxy_type} must be set to one of socks.PROXY_TYPE_XXX
+constants. The \var{proxy_host} and \var{proxy_port} must be set to the location
+of the proxy. The optional \var{proxy_rdns} should be set to True if
+the DNS server on the proxy should be used. The \var{proxy_user} and 
+\var{proxy_pass} are supplied when the proxy is protected by authentication.
+\end{classdesc}
+
 
 % If your module defines new object types (for a built-in module) or
 % classes (for a module written in Python), you should list the
@@ -295,7 +308,6 @@
 
 
 
-
 \subsection{Response Objects}
 \label{response-objects}
 % This label is generally useful for referencing this section, but is
@@ -414,3 +426,16 @@
 >>> resp, content = h.request("http://example.com", method="POST", body=body)
 \end{verbatim}
 % Note that there is no trailing ">>> " prompt shown.
+
+Here is an example of using a proxy server:
+\begin{verbatim}
+import httplib2
+import socks
+
+httplib2.debuglevel=4
+h = httplib2.Http(proxy_info = httplib2.ProxyInfo(socks.PROXY_TYPE_HTTP, 'localhost', 8000))
+r,c = h.request("http://bitworking.org/news/")
+\end{verbatim}
+
+
+
diff --git a/setup.py b/setup.py
index af35532..d18a2c9 100644
--- a/setup.py
+++ b/setup.py
@@ -1,5 +1,5 @@
 from distutils.core import setup
-VERSION = '0.3.0'
+VERSION = '0.4.0'
 setup(name='httplib2',
         version=VERSION, 
         author='Joe Gregorio',