##// END OF EJS Templates
Mercurial: fix stream ehxaustion problem....
marcink -
r249:8784eaf0 default
parent child
Show More
@@ -17,6 +17,7
17
17
18 import os
18 import os
19 import logging
19 import logging
20 import itertools
20
21
21 import mercurial
22 import mercurial
22 import mercurial.error
23 import mercurial.error
@@ -67,8 +68,27 class HgWeb(mercurial.hgweb.hgweb_mod.hg
67 """Unused function so raise an exception if accidentally called."""
68 """Unused function so raise an exception if accidentally called."""
68 raise NotImplementedError
69 raise NotImplementedError
69
70
70 def run_wsgi(self, req):
71 def __call__(self, environ, start_response):
71 """Check the request has a valid command, failing fast otherwise."""
72 """Run the WSGI application.
73
74 This may be called by multiple threads.
75 """
76 req = mercurial.hgweb.request.wsgirequest(environ, start_response)
77 gen = self.run_wsgi(req)
78
79 first_chunk = None
80
81 try:
82 data = gen.next()
83 def first_chunk(): yield data
84 except StopIteration:
85 pass
86
87 if first_chunk:
88 return itertools.chain(first_chunk(), gen)
89 return gen
90
91 def _runwsgi(self, req, repo):
72 cmd = req.form.get('cmd', [''])[0]
92 cmd = req.form.get('cmd', [''])[0]
73 if not mercurial.hgweb.protocol.iscmd(cmd):
93 if not mercurial.hgweb.protocol.iscmd(cmd):
74 req.respond(
94 req.respond(
@@ -78,7 +98,7 class HgWeb(mercurial.hgweb.hgweb_mod.hg
78 )
98 )
79 return ['']
99 return ['']
80
100
81 return super(HgWeb, self).run_wsgi(req)
101 return super(HgWeb, self)._runwsgi(req, repo)
82
102
83
103
84 def make_hg_ui_from_config(repo_config):
104 def make_hg_ui_from_config(repo_config):
General Comments 0
You need to be logged in to leave comments. Login now