Ticket #276: httpserver.py.2.patch

File httpserver.py.2.patch, 2.8 KB (added by n.vandamme, 2 years ago)

IPV6 support for paste serve

Line 
1*** ../src/Paste/paste/httpserver.py    2009-07-24 12:40:07.000000000 +0200
2--- ./lib/python2.6/site-packages/paste/httpserver.py   2010-02-15 18:21:59.000000000 +0100
3***************
4*** 183,190 ****
5          if endslash and path != '/':
6              # Put the slash back...
7              path += '/'
8!         (server_name, server_port) = self.server.server_address
9!
10          rfile = self.rfile
11          if 'HTTP/1.1' == self.protocol_version and \
12                  '100-continue' == self.headers.get('Expect','').lower():
13--- 183,190 ----
14          if endslash and path != '/':
15              # Put the slash back...
16              path += '/'
17!         server_name = self.server.server_address[0]
18!         server_port = self.server.server_address[1]
19          rfile = self.rfile
20          if 'HTTP/1.1' == self.protocol_version and \
21                  '100-continue' == self.headers.get('Expect','').lower():
22***************
23*** 325,330 ****
24--- 325,334 ----
25          def __init__(self, server_address, RequestHandlerClass,
26                       ssl_context=None, request_queue_size=None):
27              assert not ssl_context, "pyOpenSSL not installed"
28+             if ':' in server_address[0]:
29+                 self.address_family = socket.AF_INET6
30+             else:
31+                 self.address_family = socket.AF_INET
32              HTTPServer.__init__(self, server_address, RequestHandlerClass)
33              if request_queue_size:
34                  self.socket.listen(request_queue_size)
35***************
36*** 357,362 ****
37--- 361,370 ----
38              # This overrides the implementation of __init__ in python's
39              # SocketServer.TCPServer (which BaseHTTPServer.HTTPServer
40              # does not override, thankfully).
41+             if ':' in server_address[0]:
42+                 self.address_family = socket.AF_INET6
43+             else:
44+                 self.address_family = socket.AF_INET
45              HTTPServer.__init__(self, server_address, RequestHandlerClass)
46              self.socket = socket.socket(self.address_family,
47                                          self.socket_type)
48***************
49*** 1300,1306 ****
50 
51      if converters.asbool(start_loop):
52          protocol = is_ssl and 'https' or 'http'
53!         host, port = server.server_address
54          if host == '0.0.0.0':
55              print 'serving on 0.0.0.0:%s view at %s://127.0.0.1:%s' % \
56                  (port, protocol, port)
57--- 1302,1311 ----
58 
59      if converters.asbool(start_loop):
60          protocol = is_ssl and 'https' or 'http'
61!         host = server.server_address[0]
62!         port = server.server_address[1]
63!         if ':' in host:
64!             host = '[%s]' % host
65          if host == '0.0.0.0':
66              print 'serving on 0.0.0.0:%s view at %s://127.0.0.1:%s' % \
67                  (port, protocol, port)