commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

r5192 - in trunk/gnue-common/src/rpc: . drivers/xmlrpc/pw_xmlrpc


From: jan
Subject: r5192 - in trunk/gnue-common/src/rpc: . drivers/xmlrpc/pw_xmlrpc
Date: Sat, 28 Feb 2004 14:20:43 -0600 (CST)

Author: jan
Date: 2004-02-28 14:20:42 -0600 (Sat, 28 Feb 2004)
New Revision: 5192

Modified:
   trunk/gnue-common/src/rpc/GCommBase.py
   trunk/gnue-common/src/rpc/drivers/xmlrpc/pw_xmlrpc/ServerAdapter.py
Log:
transfer traceback from server to client (for pw_xmlrpc)


Modified: trunk/gnue-common/src/rpc/GCommBase.py
===================================================================
--- trunk/gnue-common/src/rpc/GCommBase.py      2004-02-28 20:04:30 UTC (rev 
5191)
+++ trunk/gnue-common/src/rpc/GCommBase.py      2004-02-28 20:20:42 UTC (rev 
5192)
@@ -30,7 +30,7 @@
 
 from gnue.common.rpc import GComm
 from gnue.common.apps import GDebug
-import string, sys, thread
+import string, sys, thread, traceback
 
 
 ##############################################################################
@@ -169,3 +169,19 @@
                                   *args, **params)
 
 
+# Support to pass exception over the wire
+# TODO: write a decode exception, or a function to build a fake traceback
+
+def encodeExc():
+  exc = sys.exc_info()
+        
+  GDebug.printMesg(1,'RPC detected Exception of type "%s", value: "%s".' % \
+                   (exc[0],exc[1]))
+        
+  error = string.join(traceback.format_exception(exc[0],exc[1], exc[2]),'\n')
+
+  # remove exception object, because garbage collector can't remove it
+  del(exc)
+        
+  return error
+

Modified: trunk/gnue-common/src/rpc/drivers/xmlrpc/pw_xmlrpc/ServerAdapter.py
===================================================================
--- trunk/gnue-common/src/rpc/drivers/xmlrpc/pw_xmlrpc/ServerAdapter.py 
2004-02-28 20:04:30 UTC (rev 5191)
+++ trunk/gnue-common/src/rpc/drivers/xmlrpc/pw_xmlrpc/ServerAdapter.py 
2004-02-28 20:20:42 UTC (rev 5192)
@@ -44,7 +44,7 @@
 from gnue.common.rpc import GComm
 from gnue.common.apps import GDebug
 from gnue.common.rpc.drivers._helpers import ObjectLibrarian, DirectoryServer
-from gnue.common.rpc import GCommBase
+from gnue.common.rpc.GCommBase import encodeExc
 
 from BaseHTTPServer import BaseHTTPRequestHandler;
 from SimpleHTTPServer import SimpleHTTPRequestHandler;
@@ -448,14 +448,13 @@
         elif type(response) != type(()):
           response = (response,)
       except:
-        # report exception back to server
-        GDebug.printMesg(1,
-            'Unexpected Exception in XML-RPC code: %s:%s' % \
-                      (sys.exc_type, sys.exc_value))
+        # report exception back to server        
         response = xmlrpclib.dumps(
-           xmlrpclib.Fault(1, "%s:%s" % (sys.exc_type, sys.exc_value)))
+           xmlrpclib.Fault(1, "%s" % encodeExc()))
+        
       else:
         response = xmlrpclib.dumps(response,methodresponse=1)
+        
     except:
       # internal error, report as HTTP server error
       GDebug.printMesg(1,





reply via email to

[Prev in Thread] Current Thread [Next in Thread]