Ignore:
Timestamp:
Mar 19, 2014, 11:31:01 PM (11 years ago)
Author:
dmik
Message:

python: Merge vendor 2.7.6 to trunk.

Location:
python/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • python/trunk

  • python/trunk/Lib/wsgiref/handlers.py

    r2 r391  
    4040
    4141
    42 
    4342class BaseHandler:
    4443    """Manage the invocation of a WSGI application"""
     
    6564    # Error handling (also per-subclass or per-instance)
    6665    traceback_limit = None  # Print entire traceback to self.get_stderr()
    67     error_status = "500 Dude, this is whack!"
     66    error_status = "500 Internal Server Error"
    6867    error_headers = [('Content-Type','text/plain')]
    6968    error_body = "A server error occurred.  Please contact the administrator."
     
    7473    headers = None
    7574    bytes_sent = 0
    76 
    77 
    78 
    79 
    80 
    81 
    82 
    8375
    8476    def run(self, application):
     
    131123        'self.close()' once the response is finished.
    132124        """
    133         if not self.result_is_file() or not self.sendfile():
    134             for data in self.result:
    135                 self.write(data)
    136             self.finish_content()
    137         self.close()
     125        try:
     126            if not self.result_is_file() or not self.sendfile():
     127                for data in self.result:
     128                    self.write(data)
     129                self.finish_content()
     130        finally:
     131            self.close()
    138132
    139133
     
    161155        Subclasses can extend this to add other defaults.
    162156        """
    163         if not self.headers.has_key('Content-Length'):
     157        if 'Content-Length' not in self.headers:
    164158            self.set_content_length()
    165159
     
    196190            if self.client_is_modern():
    197191                self._write('HTTP/%s %s\r\n' % (self.http_version,self.status))
    198                 if not self.headers.has_key('Date'):
     192                if 'Date' not in self.headers:
    199193                    self._write(
    200194                        'Date: %s\r\n' % format_date_time(time.time())
    201195                    )
    202                 if self.server_software and not self.headers.has_key('Server'):
     196                if self.server_software and 'Server' not in self.headers:
    203197                    self._write('Server: %s\r\n' % self.server_software)
    204198        else:
     
    249243        """Ensure headers and content have both been sent"""
    250244        if not self.headers_sent:
    251             self.headers['Content-Length'] = "0"
     245            # Only zero Content-Length if not set by the application (so
     246            # that HEAD requests can be satisfied properly, see #3839)
     247            self.headers.setdefault('Content-Length', "0")
    252248            self.send_headers()
    253249        else:
     
    360356
    361357
    362 
    363 
    364 
    365 
    366 
    367 
    368 
    369 
    370 
    371358class SimpleHandler(BaseHandler):
    372359    """Handler that's just initialized with streams, environment, etc.
     
    434421
    435422
    436 
    437 
    438 
    439 
    440 
    441 
    442 
    443 
    444 
    445 
    446 
    447 
    448 
    449 
    450 
    451 
    452 
    453423class CGIHandler(BaseCGIHandler):
    454424
     
    479449            multithread=False, multiprocess=True
    480450        )
    481 
    482 
    483 
    484 
    485 
    486 
    487 
    488 
    489 
    490 
    491 
    492 
    493 
    494 
    495 
    496 
    497 #
Note: See TracChangeset for help on using the changeset viewer.