Author: dmeyer
Date: Sun Sep 16 15:19:34 2007
New Revision: 2822
Log:
handle unpickable exceptions
Modified:
trunk/base/src/rpc.py
Modified: trunk/base/src/rpc.py
==============================================================================
--- trunk/base/src/rpc.py (original)
+++ trunk/base/src/rpc.py Sun Sep 16 15:19:34 2007
@@ -417,6 +417,17 @@
self._send_packet(seq, packet_type, payload)
+ def _send_delayed_exception(self, payload, seq, packet_type):
+ """
+ Send delayed exception when callback returns InProgress.
+ """
+ try:
+ payload = cPickle.dumps(payload, pickle.HIGHEST_PROTOCOL)
+ except cPickle.UnpickleableError:
+ payload = cPickle.dumps(Exception(str(payload)))
+ self._send_packet(seq, packet_type, payload)
+
+
def _handle_packet_after_auth(self, seq, type, payload):
"""
Handle incoming packet (called from _handle_write) after
@@ -432,7 +443,7 @@
payload = self._callbacks[function](*args, **kwargs)
if isinstance(payload, kaa.notifier.InProgress):
payload.connect(self._send_delayed_answer, seq, 'RETN')
-
payload.exception_handler.connect(self._send_delayed_answer, seq, 'EXCP')
+
payload.exception_handler.connect(self._send_delayed_exception, seq, 'EXCP')
return True
packet_type = 'RETN'
except (SystemExit, KeyboardInterrupt):
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog