Changeset 641

Show
Ignore:
Timestamp:
02/07/07 23:43:48 (2 years ago)
Author:
alo
Message:

--

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • cherokee-pyscgi/ChangeLog

    r518 r641  
     12007-02-07  Alvaro Lopez Ortega  <alvaro@alobbs.com> 
     2 
     3        * pyscgi/pyscgi.py (SCGIHandler.__init__): It inherits from 
     4        StreamRequestHandler rather than from BaseRequestHandler. 
     5 
     62007-01-27  Alvaro Lopez Ortega  <alvaro@alobbs.com> 
     7 
     8        * pyscgi/pyscgi.py (SCGIHandler.handle): self.handle_request() is 
     9        now inside a try clause. That method have to be implement by the 
     10        user, so there is a change of something going wrong, in which case 
     11        the server should close the in/out descriptiors as well. 
     12 
    1132006-12-12  Alvaro Lopez Ortega  <alvaro@alobbs.com> 
    214 
  • cherokee-pyscgi/pyscgi/pyscgi.py

    r517 r641  
    3737 
    3838import SocketServer 
     39import traceback 
    3940 
    40 __version__ = '1.0
     41__version__ = '1.1
    4142__author__  = 'Alvaro Lopez Ortega' 
    4243 
    4344 
    44 class SCGIHandler (SocketServer.BaseRequestHandler): 
     45class SCGIHandler (SocketServer.StreamRequestHandler): 
    4546    def __init__ (self, request, client_address, server): 
    46         self.env  = {} 
    47         self.post = None 
    48         SocketServer.BaseRequestHandler.__init__ (self, request, client_address, server) 
     47        self.env    = {} 
     48        self.post   = None 
     49        SocketServer.StreamRequestHandler.__init__ (self, request, client_address, server) 
    4950 
    5051    def __read_netstring_size (self): 
    5152        size = "" 
    5253        while 1: 
    53             c = self.input.read(1) 
     54            c = self.rfile.read(1) 
    5455            if c == ':': 
    5556                break 
     
    6364        size = self.__read_netstring_size() 
    6465        while size > 0: 
    65             s = self.input.read(size) 
     66            s = self.rfile.read(size) 
    6667            if not s: 
    6768                raise IOError, 'Malformed netstring' 
    6869            data += s 
    6970            size -= len(s) 
    70             if self.input.read(1) != ',': 
     71            if self.rfile.read(1) != ',': 
    7172                raise IOError, 'Missing netstring terminator' 
    7273        return data 
     
    8586            return 
    8687        length = int(self.env['CONTENT_LENGTH']) 
    87         self.post = self.input.read(length) 
     88        self.post = self.rfile.read(length) 
    8889 
    8990    def handle (self): 
    90         self.input = self.request.makefile('r') 
    91         self.output = self.request.makefile('w') 
     91        self.__read_env() 
    9292 
    93         self.__read_env() 
    94         self.handle_request() 
    95         self.output.close() 
    96         self.input.close() 
     93        try: 
     94            self.handle_request() 
     95        except: 
     96            traceback.print_exc() 
     97            self.request.finish() 
     98            self.request.close() 
    9799 
    98100    def handle_request (self): 
    99         self.output.write("Content-Type: text/plain\r\n\r\n") 
    100         self.output.write("handle_request() should be overridden") 
     101        self.wfile.write("Content-Type: text/plain\r\n\r\n") 
     102        self.wfile.write("handle_request() should be overridden") 
    101103 
    102104