[tor-commits] [meek/master] Catch NS_ERROR_NOT_AVAILABLE in reading responseStatus.

dcf at torproject.org dcf at torproject.org
Sun Feb 22 23:57:48 UTC 2015


commit 38924aa574c1d6da331b69536210bad70ca95873
Author: David Fifield <david at bamsoftware.com>
Date:   Sun Feb 22 15:00:42 2015 -0800

    Catch NS_ERROR_NOT_AVAILABLE in reading responseStatus.
    
    This enables us to send a meaningful {"error": "..."} blob back to the
    requestor.
---
 firefox/components/main.js |   14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/firefox/components/main.js b/firefox/components/main.js
index f231cd6..b851d49 100644
--- a/firefox/components/main.js
+++ b/firefox/components/main.js
@@ -408,9 +408,17 @@ MeekHTTPHelper.HttpStreamListener.prototype = {
     },
     onStopRequest: function(req, context, status) {
         // dump("onStopRequest " + status + "\n");
-        let resp = {
-            status: context.responseStatus,
-        };
+        let resp = {};
+        try {
+            resp.status = context.responseStatus;
+        } catch (e) {
+            if (e instanceof Components.interfaces.nsIXPCException
+                && e.result == Components.results.NS_ERROR_NOT_AVAILABLE) {
+                // Reading context.responseStatus can fail in this way when
+                // there is no HTTP response; e.g., when the connection is
+                // reset.
+            }
+        }
         if (Components.isSuccessCode(status)) {
             resp.body = btoa(this.body.join(""));
         } else {





More information about the tor-commits mailing list