[OpenSRF-GIT] OpenSRF branch rel_2_0 updated. osrf_rel_2_0_1-9-gfad3318

Evergreen Git git at git.evergreen-ils.org
Fri May 25 23:11:48 EDT 2012


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "OpenSRF".

The branch, rel_2_0 has been updated
       via  fad3318f39fb5a7ab546af2a62a4eb3ad00ce0bb (commit)
      from  2e5c36e213292b802dcf17729ad705016892c99c (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit fad3318f39fb5a7ab546af2a62a4eb3ad00ce0bb
Author: Bill Erickson <berick at esilibrary.com>
Date:   Mon Apr 2 14:55:56 2012 -0400

    Detect and repair multipart/mixed message delivery errors
    
    For unknown reasons, the Content-Type header will occasionally be
    included in the XHR.responseText for multipart/mixed messages.  When
    this happens, strip the header and newlines from the message body and
    re-parse.
    
    Signed-off-by: Bill Erickson <berick at esilibrary.com>
    Signed-off-by: Dan Scott <dan at coffeecode.net>

diff --git a/src/javascript/opensrf.js b/src/javascript/opensrf.js
index dfff52a..c0e454c 100644
--- a/src/javascript/opensrf.js
+++ b/src/javascript/opensrf.js
@@ -388,11 +388,43 @@ OpenSRF.Stack = function() {
 // global inbound message queue
 OpenSRF.Stack.queue = [];
 
+// XXX testing
+function log(msg) {
+    try {
+        dump(msg + '\n'); // xulrunner
+    } catch(E) {
+        console.log(msg);
+    }
+}
+
 OpenSRF.Stack.push = function(net_msg, callbacks) {
     var ses = OpenSRF.Session.find_session(net_msg.thread); 
     if(!ses) return;
     ses.remote_id = net_msg.from;
-    osrf_msgs = JSON2js(net_msg.body);
+    osrf_msgs = [];
+
+    try {
+        osrf_msgs = JSON2js(net_msg.body);
+
+    } catch(E) {
+        log('Error parsing OpenSRF message body as JSON: ' + net_msg.body + '\n' + E);
+
+        /** UGH
+          * For unknown reasons, the Content-Type header will occasionally
+          * be included in the XHR.responseText for multipart/mixed messages.
+          * When this happens, strip the header and newlines from the message
+          * body and re-parse.
+          */
+        net_msg.body = net_msg.body.replace(/^.*\n\n/, '');
+        log('Cleaning up and retrying...');
+
+        try {
+            osrf_msgs = JSON2js(net_msg.body);
+        } catch(E2) {
+            log('Unable to clean up message, giving up: ' + net_msg.body);
+            return;
+        }
+    }
 
     // push the latest responses onto the end of the inbound message queue
     for(var i = 0; i < osrf_msgs.length; i++)

-----------------------------------------------------------------------

Summary of changes:
 src/javascript/opensrf.js |   34 +++++++++++++++++++++++++++++++++-
 1 files changed, 33 insertions(+), 1 deletions(-)


hooks/post-receive
-- 
OpenSRF


More information about the opensrf-commits mailing list