mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-17 15:25:52 +00:00
Bug 1032646 - Record discovery replies to avoid purging every time. r=paul
This commit is contained in:
parent
be9057c904
commit
e5625c5dae
@ -329,6 +329,9 @@ Discovery.prototype = {
|
||||
let remoteDevice = update.device;
|
||||
let remoteHost = update.from;
|
||||
|
||||
// Record the reply as received so it won't be purged as missing
|
||||
this._expectingReplies.from.delete(remoteDevice);
|
||||
|
||||
// First, loop over the known services
|
||||
for (let service in this.remoteServices) {
|
||||
let devicesWithService = this.remoteServices[service];
|
||||
|
@ -116,6 +116,9 @@ add_task(function*() {
|
||||
discovery.addService("penguins", { tux: false });
|
||||
yield scanForChange("penguins", "updated");
|
||||
|
||||
// Scan again, but nothing should be removed
|
||||
yield scanForNoChange("penguins", "removed");
|
||||
|
||||
// Split the scanning side from the service side to simulate the machine with
|
||||
// the service becoming unreachable
|
||||
gTestTransports = {};
|
||||
@ -137,3 +140,17 @@ function scanForChange(service, changeType) {
|
||||
discovery.scan();
|
||||
return deferred.promise;
|
||||
}
|
||||
|
||||
function scanForNoChange(service, changeType) {
|
||||
let deferred = promise.defer();
|
||||
let timer = setTimeout(() => {
|
||||
deferred.resolve();
|
||||
}, discovery.replyTimeout + 500);
|
||||
discovery.on(service + "-device-" + changeType, function onChange() {
|
||||
discovery.off(service + "-device-" + changeType, onChange);
|
||||
clearTimeout(timer);
|
||||
deferred.reject(new Error("Unexpected change occurred"));
|
||||
});
|
||||
discovery.scan();
|
||||
return deferred.promise;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user