changeset 6265:be76e54570f0

Issue937: error messages from hooks not sent over HTTP. Turns out that stderr - where ui.warn would send messages - was not being proxied over the HTTP connection. stdout was, and it seems you need both. (The streams are interleaved for readability.) Tested on Ubuntu 7.10 with lighttpd on hgweb.cgi with HTTP Basic auth, no SSL, using a changeset failing win32text.forbidcrlf.
author Jesse Glick <jesse.glick@sun.com>
date Mon, 25 Feb 2008 09:55:57 -0500
parents 3a775af0bc9f
children 9f76df0edb7d
files mercurial/hgweb/protocol.py
diffstat 1 files changed, 3 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/hgweb/protocol.py	Fri Mar 14 20:01:50 2008 -0300
+++ b/mercurial/hgweb/protocol.py	Mon Feb 25 09:55:57 2008 -0500
@@ -175,8 +175,8 @@
 
                 # send addchangegroup output to client
 
-                old_stdout = sys.stdout
-                sys.stdout = cStringIO.StringIO()
+                oldio = sys.stdout, sys.stderr
+                sys.stderr = sys.stdout = cStringIO.StringIO()
 
                 try:
                     url = 'remote:%s:%s' % (proto,
@@ -188,7 +188,7 @@
                         ret = 0
                 finally:
                     val = sys.stdout.getvalue()
-                    sys.stdout = old_stdout
+                    sys.stdout, sys.stderr = oldio
                 req.write('%d\n' % ret)
                 req.write(val)
             finally: