Download Install Tutorial Docs FAQ Tools WikiLicense Team IRC Planet Involvement Shop Book

Changeset 1165

Show
Ignore:
Timestamp:
06/27/06 17:36:55
Author:
fumanchu
Message:

Updated WSGI server to use email package instead of mimetools. This will allow encoded header values, for example.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/cherrypy/_cpwsgiserver.py

    r1164 r1165  
    44import threading 
    55import Queue 
    6 import mimetools # todo: use email 
     6from email import FeedParser, Message 
    77import sys 
    88import time 
     
    9393            self.environ["REMOTE_ADDR"] = self.addr[0] 
    9494            self.environ["REMOTE_PORT"] = str(self.addr[1]) 
     95         
    9596        # then all the http headers 
    96         headers = mimetools.Message(self.rfile) 
    97         self.environ["CONTENT_TYPE"] = headers.getheader("Content-type", "") 
    98         cl = headers.getheader("Content-length") 
     97        feedparser = FeedParser.FeedParser(Message.Message) 
     98        feedparser._set_headersonly() 
     99        while True: 
     100            data = self.rfile.readline() 
     101            if not data or data in ('\n', '\r\n'): 
     102                break 
     103            feedparser.feed(data) 
     104        headers = feedparser.close() 
     105         
     106        self.environ["CONTENT_TYPE"] = headers.get("Content-type", "") 
     107        cl = headers.get("Content-length") 
    99108        if method in ("POST", "PUT") and cl is None: 
    100109            # No Content-Length header supplied. This will hang 

Hosted by WebFaction

Log in as guest/cpguest to create tickets