@@ -611,12 +611,17 @@ def session_id(self):
611611 def session (self ):
612612 return self ._session
613613
614+ @property
615+ def path_info (self ):
616+ return self .environ ['PATH_INFO' ]
617+
614618 def start_response (self , status_code = 200 , headers = None ):
615619 buffers = self ._buffers
616620 if self ._headers_responsed :
617621 raise ValueError ('Http headers already responsed.' )
618622 response_headers = {}
619623 response_headers ['Server' ] = server_info
624+ response_headers ['Content-Type' ] = 'text/html;charset=utf-8'
620625 status_code = int (status_code )
621626 status_text = http_status_codes [status_code ]
622627 buffers .write ('HTTP/1.1 %d %s\r \n ' % (status_code , status_text ))
@@ -656,7 +661,7 @@ def _finish(self, content):
656661 rw = self ._rw
657662 if not self ._headers_responsed :
658663 self .start_response (200 )
659- rw .write (self ._buffers .getvalue ())
664+ rw .write (self ._buffers .getvalue ())
660665 if isinstance (content , basestring ):
661666 rw .write (content )
662667 else :
@@ -699,7 +704,12 @@ def _handler(self):
699704 path = double_slash_sub ('/' , path )
700705 if path != path_info :
701706 result = self .redirect (path )
702- return self ._finish (result )
707+ try :
708+ return self ._finish (result )
709+ except :
710+ content = exceptions .html_error_template ().render ()
711+ result = self ._response (500 , content = content )
712+ return self ._finish (result )
703713 base , name = path_split (path )
704714 if not name :
705715 name = app .config .default_page
@@ -717,7 +727,11 @@ def _handler(self):
717727 result = self ._response (500 )
718728 return self ._finish (result )
719729 else :
720- return self ._finish (result )
730+ try :
731+ return self ._finish (result )
732+ except :
733+ result = exceptions .html_error_template ().render ()
734+ return self ._finish (result )
721735 litefile = app .files .get (path )
722736 if litefile is not None :
723737 return litefile .handler (self )
@@ -745,7 +759,11 @@ def _handler(self):
745759 result = self ._response (500 )
746760 return self ._finish (result )
747761 else :
748- return self ._finish (result )
762+ try :
763+ return self ._finish (result )
764+ except :
765+ result = exceptions .html_error_template ().render ()
766+ return self ._finish (result )
749767 try :
750768 litefile = self ._load_static_file (base , name )
751769 except IOError :
0 commit comments