Index: trunk/packages/sipb-xen-www/code/main.py
===================================================================
--- trunk/packages/sipb-xen-www/code/main.py	(revision 599)
+++ trunk/packages/sipb-xen-www/code/main.py	(revision 600)
@@ -31,5 +31,4 @@
     import atexit
     atexit.register(printError)
-    sys.stderr = StringIO()
 
 sys.path.append('/home/ecprice/.local/lib/python2.5/site-packages')
@@ -119,11 +118,11 @@
 DEFAULT_HEADERS = {'Content-Type': 'text/html'}
 
-def error(op, username, fields, err, emsg):
+def error(op, username, fields, err, emsg, traceback):
     """Print an error page when a CodeError occurs"""
     send_error_mail('xvm error on %s for %s: %s' % (op, username, err),
                     'error on %s for %s: %s\n\n%s\n'
                     % (op, username, err, emsg))
-    d = dict(op=op, user=username, errorMessage=str(err),
-             stderr=emsg)
+    d = dict(op=op, user=username, fields=fields,
+             errorMessage=str(err), stderr=emsg, traceback=traceback)
     return templates.error(searchList=[d])
 
@@ -637,6 +636,6 @@
 
     def __iter__(self):
+        sys.stderr = StringIO()
         fields = cgi.FieldStorage(fp=self.environ['wsgi.input'], environ=self.environ)
-        print >> sys.stderr, fields
         operation = self.environ.get('PATH_INFO', '')
         if not operation:
@@ -677,9 +676,11 @@
             checkpoint.checkpoint('output as a string')
         except Exception, err:
+            import traceback
             if not fields.has_key('js'):
                 if isinstance(err, CodeError):
                     self.start('500 Internal Server Error', [('Content-Type', 'text/html')])
                     e = revertStandardError()
-                    s = error(operation, self.username, fields, err, e)
+                    s = error(operation, self.username, fields,
+                              err, e, traceback.format_exc())
                     yield str(s)
                     return
@@ -690,5 +691,4 @@
                     return
             self.start('500 Internal Server Error', [('Content-Type', 'text/plain')])
-            import traceback
             send_error_mail('xvm error: %s' % (err,),
                             '%s\n' % (traceback.format_exc(),))
Index: trunk/packages/sipb-xen-www/code/templates/error.tmpl
===================================================================
--- trunk/packages/sipb-xen-www/code/templates/error.tmpl	(revision 599)
+++ trunk/packages/sipb-xen-www/code/templates/error.tmpl	(revision 600)
@@ -17,6 +17,16 @@
 <pre>
 Error on operation $op for user $user: $errorMessage
-Error output (if any):
-$stderr
+
+Fields:
+#for $f in $fields:
+$f=$fields[$f].value
+#end for
+
+Error output:
+$stderr#slurp
+---- end error output
+
+Traceback:
+$traceback
 </pre>
 #end def
