add User-agent hdr; read and close the file upon http error
diff --git a/Lib/urllib.py b/Lib/urllib.py
index c49f032..b7a1ce8 100644
--- a/Lib/urllib.py
+++ b/Lib/urllib.py
@@ -19,6 +19,9 @@
 import regex
 
 
+__version__ = '1.0'
+
+
 # This really consists of two pieces:
 # (1) a class which handles opening of all sorts of URLs
 #     (plus assorted utilities etc.)
@@ -51,7 +54,8 @@
 
 	# Constructor
 	def __init__(self):
-		self.addheaders = []
+		server_version = "Python-urllib/%s" % __version__
+		self.addheaders = [('User-agent', server_version)]
 		self.tempcache = None
 		# Undocumented feature: if you assign {} to tempcache,
 		# it is used to cache files retrieved with
@@ -146,9 +150,15 @@
 		h = httplib.HTTP(host)
 		h.putrequest('GET', selector)
 		for args in self.addheaders: apply(h.putheader, args)
+		h.endheaders()
 		errcode, errmsg, headers = h.getreply()
-		if errcode == 200: return addinfo(h.getfile(), headers)
-		else: raise IOError, ('http error', errcode, errmsg, headers)
+		fp = h.getfile()
+		if errcode == 200:
+			return addinfo(fp, headers)
+		else:
+			n = len(fp.read())
+			fp.close()
+			raise IOError, ('http error', errcode, errmsg, headers)
 
 	# Use Gopher protocol
 	def open_gopher(self, url):
@@ -322,6 +332,7 @@
 		self.readline = None
 		self.readlines = None
 		self.fileno = None
+		if self.fp: self.fp.close()
 		self.fp = None
 
 # Class to add a close hook to an open file