mercurial/hgweb/server.py
changeset 29433 33770d2b6cf9
parent 28883 032c4c2f802a
child 29553 cd3e58862cab
equal deleted inserted replaced
29432:34b914ac573e 29433:33770d2b6cf9
     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):