mercurial/hgweb/server.py
changeset 36803 8e1556ac01bb
parent 36802 7fc80c982656
child 37009 5890e5872f36
equal deleted inserted replaced
36802:7fc80c982656 36803:8e1556ac01bb
    11 import errno
    11 import errno
    12 import os
    12 import os
    13 import socket
    13 import socket
    14 import sys
    14 import sys
    15 import traceback
    15 import traceback
       
    16 import wsgiref.validate
    16 
    17 
    17 from ..i18n import _
    18 from ..i18n import _
    18 
    19 
    19 from .. import (
    20 from .. import (
    20     encoding,
    21     encoding,
   126         env[r'REQUEST_URI'] = self.path
   127         env[r'REQUEST_URI'] = self.path
   127         env[r'SCRIPT_NAME'] = pycompat.sysstr(self.server.prefix)
   128         env[r'SCRIPT_NAME'] = pycompat.sysstr(self.server.prefix)
   128         env[r'PATH_INFO'] = pycompat.sysstr(path[len(self.server.prefix):])
   129         env[r'PATH_INFO'] = pycompat.sysstr(path[len(self.server.prefix):])
   129         env[r'REMOTE_HOST'] = self.client_address[0]
   130         env[r'REMOTE_HOST'] = self.client_address[0]
   130         env[r'REMOTE_ADDR'] = self.client_address[0]
   131         env[r'REMOTE_ADDR'] = self.client_address[0]
   131         if query:
   132         env[r'QUERY_STRING'] = query or r''
   132             env[r'QUERY_STRING'] = query
       
   133 
   133 
   134         if pycompat.ispy3:
   134         if pycompat.ispy3:
   135             if self.headers.get_content_type() is None:
   135             if self.headers.get_content_type() is None:
   136                 env[r'CONTENT_TYPE'] = self.headers.get_default_type()
   136                 env[r'CONTENT_TYPE'] = self.headers.get_default_type()
   137             else:
   137             else:
   164                                              socketserver.ThreadingMixIn)
   164                                              socketserver.ThreadingMixIn)
   165         env[r'wsgi.multiprocess'] = isinstance(self.server,
   165         env[r'wsgi.multiprocess'] = isinstance(self.server,
   166                                               socketserver.ForkingMixIn)
   166                                               socketserver.ForkingMixIn)
   167         env[r'wsgi.run_once'] = 0
   167         env[r'wsgi.run_once'] = 0
   168 
   168 
       
   169         wsgiref.validate.check_environ(env)
       
   170 
   169         self.saved_status = None
   171         self.saved_status = None
   170         self.saved_headers = []
   172         self.saved_headers = []
   171         self.length = None
   173         self.length = None
   172         self._chunked = None
   174         self._chunked = None
   173         for chunk in self.server.application(env, self._start_response):
   175         for chunk in self.server.application(env, self._start_response):