equal
deleted
inserted
replaced
7 # GNU General Public License version 2 or any later version. |
7 # GNU General Public License version 2 or any later version. |
8 |
8 |
9 from __future__ import absolute_import |
9 from __future__ import absolute_import |
10 |
10 |
11 import BaseHTTPServer |
11 import BaseHTTPServer |
12 import SocketServer |
|
13 import errno |
12 import errno |
14 import os |
13 import os |
15 import socket |
14 import socket |
16 import sys |
15 import sys |
17 import traceback |
16 import traceback |
21 from .. import ( |
20 from .. import ( |
22 error, |
21 error, |
23 util, |
22 util, |
24 ) |
23 ) |
25 |
24 |
|
25 socketserver = util.socketserver |
26 urlerr = util.urlerr |
26 urlerr = util.urlerr |
27 urlreq = util.urlreq |
27 urlreq = util.urlreq |
28 |
28 |
29 from . import ( |
29 from . import ( |
30 common, |
30 common, |
145 self.rfile = common.continuereader(self.rfile, self.wfile.write) |
145 self.rfile = common.continuereader(self.rfile, self.wfile.write) |
146 |
146 |
147 env['wsgi.input'] = self.rfile |
147 env['wsgi.input'] = self.rfile |
148 env['wsgi.errors'] = _error_logger(self) |
148 env['wsgi.errors'] = _error_logger(self) |
149 env['wsgi.multithread'] = isinstance(self.server, |
149 env['wsgi.multithread'] = isinstance(self.server, |
150 SocketServer.ThreadingMixIn) |
150 socketserver.ThreadingMixIn) |
151 env['wsgi.multiprocess'] = isinstance(self.server, |
151 env['wsgi.multiprocess'] = isinstance(self.server, |
152 SocketServer.ForkingMixIn) |
152 socketserver.ForkingMixIn) |
153 env['wsgi.run_once'] = 0 |
153 env['wsgi.run_once'] = 0 |
154 |
154 |
155 self.saved_status = None |
155 self.saved_status = None |
156 self.saved_headers = [] |
156 self.saved_headers = [] |
157 self.sent_headers = False |
157 self.sent_headers = False |
238 self.wfile = socket._fileobject(self.request, "wb", self.wbufsize) |
238 self.wfile = socket._fileobject(self.request, "wb", self.wbufsize) |
239 |
239 |
240 try: |
240 try: |
241 import threading |
241 import threading |
242 threading.activeCount() # silence pyflakes and bypass demandimport |
242 threading.activeCount() # silence pyflakes and bypass demandimport |
243 _mixin = SocketServer.ThreadingMixIn |
243 _mixin = socketserver.ThreadingMixIn |
244 except ImportError: |
244 except ImportError: |
245 if util.safehasattr(os, "fork"): |
245 if util.safehasattr(os, "fork"): |
246 _mixin = SocketServer.ForkingMixIn |
246 _mixin = socketserver.ForkingMixIn |
247 else: |
247 else: |
248 class _mixin(object): |
248 class _mixin(object): |
249 pass |
249 pass |
250 |
250 |
251 def openlog(opt, default): |
251 def openlog(opt, default): |