[tor-commits] [meek/extension] Block without returning in profile-after-change handler.

dcf at torproject.org dcf at torproject.org
Sun Apr 6 07:36:13 UTC 2014


commit 2c4dd9e4bec9a24e674fdcdbf0fba6be3dab3c03
Author: David Fifield <david at bamsoftware.com>
Date:   Sun Mar 23 19:46:15 2014 -0700

    Block without returning in profile-after-change handler.
    
    As suggested in https://trac.torproject.org/projects/tor/ticket/11183#comment:11,
    I'm going to try running the HTTP helper in a second browser instance.
    The extension blocks in order that the browser won't show a browser
    window.
    
    There's probably a better way to block the function without returning,
    but for now I'm just raising a modal dialog.
---
 firefox/components/main.js |   22 +++++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)

diff --git a/firefox/components/main.js b/firefox/components/main.js
index d4b4d35..8ed3fd1 100644
--- a/firefox/components/main.js
+++ b/firefox/components/main.js
@@ -55,11 +55,23 @@ MeekHTTPHelper.prototype = {
         if (topic !== "profile-after-change")
             return
 
-        // https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIServerSocket
-        var serverSocket = Components.classes["@mozilla.org/network/server-socket;1"]
-            .createInstance(Components.interfaces.nsIServerSocket);
-        serverSocket.init(MeekHTTPHelper.LOCAL_PORT, true, -1);
-        serverSocket.asyncListen(this);
+        try {
+            // https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIServerSocket
+            var serverSocket = Components.classes["@mozilla.org/network/server-socket;1"]
+                .createInstance(Components.interfaces.nsIServerSocket);
+            // Listen on loopback only, with default backlog.
+            serverSocket.init(MeekHTTPHelper.LOCAL_PORT, true, -1);
+            serverSocket.asyncListen(this);
+
+            // Block forever.
+            var prompts = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
+                .getService(Components.interfaces.nsIPromptService);
+            prompts.confirm(null, "Query", "Get down, get funky?");
+        } finally {
+            var app = Components.classes["@mozilla.org/toolkit/app-startup;1"]
+                .getService(Components.interfaces.nsIAppStartup);
+            app.quit(app.eForceQuit);
+        }
     },
 
     // nsIServerSocketListener implementation.





More information about the tor-commits mailing list