summaryrefslogtreecommitdiff
path: root/net-p2p/py-bittorrent-devel/files/patch-BitTorrent::zurllib.py
blob: 0b6211e87d949e38af8522e3d0f2b5c1b90f3aae (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
--- BitTorrent/zurllib.py.orig	Wed Jan  5 20:41:27 2005
+++ BitTorrent/zurllib.py	Wed Jan  5 20:41:50 2005
@@ -10,7 +10,7 @@
 
 # Written by John Hoffman
 
-from httplib import HTTPConnection
+from httplib import HTTPConnection, HTTPException
 from urlparse import urlparse
 import socket
 from gzip import GzipFile
@@ -20,6 +20,15 @@
 
 MAX_REDIRECTS = 10
 
+class btHTTPcon(HTTPConnection): # attempt to add automatic connection timeout
+    def connect(self):
+        HTTPConnection.connect(self)
+        try:
+            self.sock.settimeout(30)
+        except:
+            pass
+
+
 class urlopen:
     def __init__(self, url):
         self.tries = 0
@@ -39,11 +48,14 @@
         if query:
             url += '?'+query
 #        if fragment:
-        self.connection = HTTPConnection(netloc)
-        self.connection.request('GET', url, None,
+        try:
+            self.connection = btHTTPcon(netloc)
+            self.connection.request('GET', url, None,
                                 { 'User-Agent': 'BitTorrent/' + version,
                                   'Accept-Encoding': 'gzip' } )
-        self.response = self.connection.getresponse()
+            self.response = self.connection.getresponse()
+        except HTTPException, e:
+            raise IOError, ('http error', str(e))
         status = self.response.status
         if status in (301,302):
             try: