mercurial/hgweb/request.py
changeset 2514 419c42223bee
parent 2507 7e01da2bc7f3
child 2535 b8ccf6386db7
equal deleted inserted replaced
2513:f22e3e8fd457 2514:419c42223bee
    55 
    55 
    56     def read(self, count=-1):
    56     def read(self, count=-1):
    57         return self.inp.read(count)
    57         return self.inp.read(count)
    58 
    58 
    59     def write(self, *things):
    59     def write(self, *things):
    60         if self.server_write is None:
       
    61             if not self.headers:
       
    62                 self.header()
       
    63             self.server_write = self.start_response('200 Script output follows',
       
    64                                                     self.headers)
       
    65             self.start_response = None
       
    66             self.headers = None
       
    67         for thing in things:
    60         for thing in things:
    68             if hasattr(thing, "__iter__"):
    61             if hasattr(thing, "__iter__"):
    69                 for part in thing:
    62                 for part in thing:
    70                     self.write(part)
    63                     self.write(part)
    71             else:
    64             else:
       
    65                 thing = str(thing)
       
    66                 if self.server_write is None:
       
    67                     if not self.headers:
       
    68                         raise RuntimeError("request.write called before headers sent (%s)." % thing)
       
    69                     self.server_write = self.start_response('200 Script output follows',
       
    70                                                             self.headers)
       
    71                     self.start_response = None
       
    72                     self.headers = None
    72                 try:
    73                 try:
    73                     self.server_write(str(thing))
    74                     self.server_write(thing)
    74                 except socket.error, inst:
    75                 except socket.error, inst:
    75                     if inst[0] != errno.ECONNRESET:
    76                     if inst[0] != errno.ECONNRESET:
    76                         raise
    77                         raise
    77 
    78 
    78     def header(self, headers=[('Content-type','text/html')]):
    79     def header(self, headers=[('Content-type','text/html')]):