diff --git a/CHANGES b/CHANGES
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,7 @@
+Version 4000.1.1: release 2010-11-28
+ * Be tolerant of LF (instead of CRLF which is the spec) in responses
+   Patch by Chris Pettitt <cpettitt@gmail.com>.
+
 Version 4000.1.0: release 2010-11-09
  * Retroactively fixed CHANGES to refer to 4000.x.x instead of
    4004.x.x.
diff --git a/HTTP.cabal b/HTTP.cabal
--- a/HTTP.cabal
+++ b/HTTP.cabal
@@ -1,90 +1,91 @@
-Name: HTTP
-Version: 4000.1.1
-Cabal-Version: >= 1.2
-Build-type: Simple
-License: BSD3
-License-file: LICENSE
-Copyright: 
-  Copyright (c) 2002, Warrick Gray
-  Copyright (c) 2002-2005, Ian Lynagh
-  Copyright (c) 2003-2006, Bjorn Bringert
-  Copyright (c) 2004, Andre Furtado
-  Copyright (c) 2004, Ganesh Sittampalam
-  Copyright (c) 2004-2005, Dominic Steinitz
-  Copyright 2007 Robin Bate Boerop
-  Copyright 2008- Sigbjorn Finne
-Author: Warrick Gray <warrick.gray@hotmail.com>
-Maintainer: Ganesh Sittampalam <ganesh@earth.li>
-Homepage: http://projects.haskell.org/http/
-Category: Network
-Synopsis: A library for client-side HTTP
-Description: 
-
- The HTTP package supports client-side web programming in Haskell. It lets you set up 
- HTTP connections, transmitting requests and processing the responses coming back, all
- from within the comforts of Haskell. It's dependent on the network package to operate,
- but other than that, the implementation is all written in Haskell.
- .
- A basic API for issuing single HTTP requests + receiving responses is provided. On top
- of that, a session-level abstraction is also on offer  (the @BrowserAction@ monad);
- it taking care of handling the management of persistent connections, proxies,
- state (cookies) and authentication credentials required to handle multi-step
- interactions with a web server.
- .
- The representation of the bytes flowing across is extensible via the use of a type class,
- letting you pick the representation of requests and responses that best fits your use.
- Some pre-packaged, common instances are provided for you (@ByteString@, @String@.)
- .
- Here's an example use:
- .
- >
- >    do
- >      rsp <- Network.HTTP.simpleHTTP (getRequest "http://www.haskell.org/")
- >              -- fetch document and return it (as a 'String'.)
- >      fmap (take 100) (getResponseBody rsp)
- >
- >    do 
- >      rsp <- Network.Browser.browse $ do
- >               setAllowRedirects True -- handle HTTP redirects
- >               request $ getRequest "http://google.com/"
- >      fmap (take 100) (getResponseBody rsp)
- > 
- .
- Git repository available at <git://github.com/haskell/HTTP.git>
-
-Extra-Source-Files: CHANGES
-
-Flag old-base
-  description: Old, monolithic base
-  default: False
-
-Library
-  Exposed-modules: 
-                 Network.BufferType,
-                 Network.Stream,
-                 Network.StreamDebugger,
-                 Network.StreamSocket,
-                 Network.TCP,                
-                 Network.HTTP,
-                 Network.HTTP.Headers,
-                 Network.HTTP.Base,
-                 Network.HTTP.Stream,
-                 Network.HTTP.Auth,
-                 Network.HTTP.Cookie,
-                 Network.HTTP.Proxy,
-                 Network.HTTP.HandleStream,
-                 Network.Browser
-  Other-modules:
-                 Network.HTTP.Base64,
-                 Network.HTTP.MD5,
-                 Network.HTTP.MD5Aux,
-                 Network.HTTP.Utils
-  GHC-options: -fwarn-missing-signatures -Wall
-  Build-depends: base >= 2 && < 4.4, network, parsec, mtl
-  if flag(old-base)
-    Build-depends: base < 3
-  else
-    Build-depends: base >= 3, array, old-time, bytestring
-
-  if os(windows)
-    Build-depends: Win32
+Name: HTTP
+Version: 4000.1.2
+Cabal-Version: >= 1.2
+Build-type: Simple
+License: BSD3
+License-file: LICENSE
+Copyright: 
+  Copyright (c) 2002, Warrick Gray
+  Copyright (c) 2002-2005, Ian Lynagh
+  Copyright (c) 2003-2006, Bjorn Bringert
+  Copyright (c) 2004, Andre Furtado
+  Copyright (c) 2004, Ganesh Sittampalam
+  Copyright (c) 2004-2005, Dominic Steinitz
+  Copyright 2007 Robin Bate Boerop
+  Copyright 2008- Sigbjorn Finne
+Author: Warrick Gray <warrick.gray@hotmail.com>
+Maintainer: Ganesh Sittampalam <ganesh@earth.li>
+Homepage: http://projects.haskell.org/http/
+Category: Network
+Synopsis: A library for client-side HTTP
+Description: 
+
+ The HTTP package supports client-side web programming in Haskell. It lets you set up 
+ HTTP connections, transmitting requests and processing the responses coming back, all
+ from within the comforts of Haskell. It's dependent on the network package to operate,
+ but other than that, the implementation is all written in Haskell.
+ .
+ A basic API for issuing single HTTP requests + receiving responses is provided. On top
+ of that, a session-level abstraction is also on offer  (the @BrowserAction@ monad);
+ it taking care of handling the management of persistent connections, proxies,
+ state (cookies) and authentication credentials required to handle multi-step
+ interactions with a web server.
+ .
+ The representation of the bytes flowing across is extensible via the use of a type class,
+ letting you pick the representation of requests and responses that best fits your use.
+ Some pre-packaged, common instances are provided for you (@ByteString@, @String@.)
+ .
+ Here's an example use:
+ .
+ >
+ >    do
+ >      rsp <- Network.HTTP.simpleHTTP (getRequest "http://www.haskell.org/")
+ >              -- fetch document and return it (as a 'String'.)
+ >      fmap (take 100) (getResponseBody rsp)
+ >
+ >    do 
+ >      rsp <- Network.Browser.browse $ do
+ >               setAllowRedirects True -- handle HTTP redirects
+ >               request $ getRequest "http://google.com/"
+ >      fmap (take 100) (getResponseBody rsp)
+ > 
+ .
+ Git repository available at <git://github.com/haskell/HTTP.git>
+
+Extra-Source-Files: CHANGES
+
+Flag old-base
+  description: Old, monolithic base
+  default: False
+
+Library
+  Exposed-modules: 
+                 Network.BufferType,
+                 Network.Stream,
+                 Network.StreamDebugger,
+                 Network.StreamSocket,
+                 Network.TCP,                
+                 Network.HTTP,
+                 Network.HTTP.Headers,
+                 Network.HTTP.Base,
+                 Network.HTTP.Stream,
+                 Network.HTTP.Auth,
+                 Network.HTTP.Cookie,
+                 Network.HTTP.Proxy,
+                 Network.HTTP.HandleStream,
+                 Network.Browser
+  Other-modules:
+                 Network.HTTP.Base64,
+                 Network.HTTP.MD5,
+                 Network.HTTP.MD5Aux,
+                 Network.HTTP.Utils
+  GHC-options: -fwarn-missing-signatures -Wall
+  Build-depends: base >= 2 && < 4.5, network, parsec, mtl
+  Extensions: FlexibleInstances
+  if flag(old-base)
+    Build-depends: base < 3
+  else
+    Build-depends: base >= 3, array, old-time, bytestring
+
+  if os(windows)
+    Build-depends: Win32
diff --git a/Network/Browser.hs b/Network/Browser.hs
--- a/Network/Browser.hs
+++ b/Network/Browser.hs
@@ -540,14 +540,14 @@
       -- Presumably this is the user's explicit and preferred proxy server.
     Proxy{} -> return p
     NoProxy{} -> do
-    flg <- getBS bsCheckProxy
-    if not flg
-     then return p 
-     else do
-      np <- ioAction $ fetchProxy True{-issue warning on stderr if ill-formed...-}
-       -- note: this resets the check-proxy flag; a one-off affair.
-      setProxy np
-      return np
+     flg <- getBS bsCheckProxy
+     if not flg
+      then return p 
+      else do
+       np <- ioAction $ fetchProxy True{-issue warning on stderr if ill-formed...-}
+        -- note: this resets the check-proxy flag; a one-off affair.
+       setProxy np
+       return np
 
 -- | @setCheckForProxy flg@ sets the one-time check for proxy
 -- flag to @flg@. If @True@, the session will try to determine
@@ -852,37 +852,37 @@
 	case allow_redirs of
 	  False -> return (Right (uri,rsp))
 	  _ -> do
-          case retrieveHeaders HdrLocation rsp of
-           [] -> do 
-	     err "No Location: header in redirect response"
-             return (Right (uri,rsp))
-           (Header _ u:_) -> 
-	     case parseURIReference u of
-               Nothing -> do
-                 err ("Parse of Location: header in a redirect response failed: " ++ u)
-                 return (Right (uri,rsp))
-               Just newURI
-		| {-uriScheme newURI_abs /= uriScheme uri && -}(not (supportedScheme newURI_abs)) -> do
-		   err ("Unable to handle redirect, unsupported scheme: " ++ show newURI_abs)
-		   return (Right (uri, rsp))
-                | otherwise -> do		     
-  	           out ("Redirecting to " ++ show newURI_abs ++ " ...") 
-                   
-                   -- Redirect using GET request method, depending on
-                   -- response code.
-                   let toGet = x `elem` [2,3]
-                       method = if toGet then GET else rqMethod rq
-                       rq1 = rq { rqMethod=method, rqURI=newURI_abs }
-                       rq2 = if toGet then (replaceHeader HdrContentLength "0") (rq1 {rqBody = nullVal}) else rq1
-                   
-                   request' nullVal
-			    rqState{ reqDenies     = 0
-			           , reqRedirects  = succ(reqRedirects rqState)
-				   , reqStopOnDeny = True
-				   }
-                            rq2
-                where
-                  newURI_abs = maybe newURI id (newURI `relativeTo` uri)
+           case retrieveHeaders HdrLocation rsp of
+            [] -> do 
+	      err "No Location: header in redirect response"
+              return (Right (uri,rsp))
+            (Header _ u:_) -> 
+	      case parseURIReference u of
+                Nothing -> do
+                  err ("Parse of Location: header in a redirect response failed: " ++ u)
+                  return (Right (uri,rsp))
+                Just newURI
+	         | {-uriScheme newURI_abs /= uriScheme uri && -}(not (supportedScheme newURI_abs)) -> do
+	            err ("Unable to handle redirect, unsupported scheme: " ++ show newURI_abs)
+	            return (Right (uri, rsp))
+                 | otherwise -> do		     
+  	            out ("Redirecting to " ++ show newURI_abs ++ " ...") 
+                    
+                    -- Redirect using GET request method, depending on
+                    -- response code.
+                    let toGet = x `elem` [2,3]
+                        method = if toGet then GET else rqMethod rq
+                        rq1 = rq { rqMethod=method, rqURI=newURI_abs }
+                        rq2 = if toGet then (replaceHeader HdrContentLength "0") (rq1 {rqBody = nullVal}) else rq1
+                    
+                    request' nullVal
+	         	    rqState{ reqDenies     = 0
+	         	           , reqRedirects  = succ(reqRedirects rqState)
+	         		   , reqStopOnDeny = True
+	         		   }
+                             rq2
+                 where
+                   newURI_abs = maybe newURI id (newURI `relativeTo` uri)
 
       (3,0,5) ->
         case retrieveHeaders HdrLocation rsp of
