Skip to content

Instantly share code, notes, and snippets.

@andreastt
Last active November 18, 2019 19:02
Show Gist options
  • Save andreastt/dead122008673e1497ae32969550f760 to your computer and use it in GitHub Desktop.
Save andreastt/dead122008673e1497ae32969550f760 to your computer and use it in GitHub Desktop.
diff --git a/remote/RemoteAgent.jsm b/remote/RemoteAgent.jsm
index 4387879dd5b4..73a4206b42b6 100644
--- a/remote/RemoteAgent.jsm
+++ b/remote/RemoteAgent.jsm
@@ -14,10 +14,12 @@ const { XPCOMUtils } = ChromeUtils.import(
XPCOMUtils.defineLazyModuleGetters(this, {
HttpServer: "chrome://remote/content/server/HTTPD.jsm",
JSONHandler: "chrome://remote/content/JSONHandler.jsm",
+ Log: "chrome://remote/content/Log.jsm",
Preferences: "resource://gre/modules/Preferences.jsm",
RecommendedPreferences: "chrome://remote/content/RecommendedPreferences.jsm",
Targets: "chrome://remote/content/targets/Targets.jsm",
});
+XPCOMUtils.defineLazyGetter(this, "log", Log.get);
const ENABLED = "remote.enabled";
const FORCE_LOCAL = "remote.force-local";
@@ -100,11 +102,16 @@ class RemoteAgentClass {
// destroy targets before stopping server,
// otherwise the HTTP will fail to stop
- this.targets.destructor();
+ if (this.targets) {
+ this.targets.destructor();
+ }
if (this.listening) {
await this.server.stop();
}
+ } catch (e) {
+ // this function must never fail
+ log.error("unable to stop listener", e);
} finally {
this.server = null;
this.targets = null;
diff --git a/remote/remote_agent.rs b/remote/remote_agent.rs
index 6e65b1d70639..1d1ed9495af5 100644
--- a/remote/remote_agent.rs
+++ b/remote/remote_agent.rs
@@ -58,8 +58,9 @@ impl RemoteAgent {
impl Drop for RemoteAgent {
fn drop(&mut self) {
+ // it should always be safe to call nsIRemoteAgent.close()
if let Err(e) = self.close() {
- error!("unable to stop remote agent: {}", e);
+ error!("unable to close remote agent listener: {}", e);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment