comparison mercurial/hgweb/request.py @ 2514:419c42223bee

Really fix http headers for web UI and issue 254. This also arranges for static content to allow a keepalive connection.
author Eric Hopper <hopper@omnifarious.org>
date Tue, 27 Jun 2006 09:33:12 -0700
parents 7e01da2bc7f3
children b8ccf6386db7
comparison
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')]):