Skip to content

Commit 67cc6d7

Browse files
committed
Make sure watcher.set() isn't being called when active
Conflicts: lib/dns.js
1 parent 825308a commit 67cc6d7

File tree

2 files changed

+8
-9
lines changed

2 files changed

+8
-9
lines changed

lib/dns.js

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,9 @@ timer.callback = function () {
1111
var sockets = Object.keys(activeWatchers);
1212
for (var i = 0, l = sockets.length; i < l; i++) {
1313
var socket = sockets[i];
14-
var s = parseInt(socket);
15-
channel.processFD( watchers[socket].read ? s : dns.SOCKET_BAD
16-
, watchers[socket].write ? s : dns.SOCKET_BAD
17-
);
14+
var s = parseInt(socket, 10);
15+
channel.processFD(watchers[socket].read ? s : dns.SOCKET_BAD,
16+
watchers[socket].write ? s : dns.SOCKET_BAD);
1817
}
1918
updateTimer();
2019
}
@@ -50,20 +49,19 @@ var channel = new dns.Channel({SOCK_STATE_CB: function (socket, read, write) {
5049
};
5150

5251
watcher.callback = function(read, write) {
53-
channel.processFD( read ? socket : dns.SOCKET_BAD
54-
, write ? socket : dns.SOCKET_BAD
55-
);
52+
channel.processFD(read ? socket : dns.SOCKET_BAD,
53+
write ? socket : dns.SOCKET_BAD);
5654
updateTimer();
5755
}
5856
}
5957

60-
watcher.set(socket, read == 1, write == 1);
58+
watcher.stop();
6159

6260
if (!(read || write)) {
63-
watcher.stop();
6461
delete activeWatchers[socket];
6562
return;
6663
} else {
64+
watcher.set(socket, read == 1, write == 1);
6765
watcher.start();
6866
activeWatchers[socket] = watcher;
6967
}

src/node_io_watcher.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ Handle<Value> IOWatcher::Set(const Arguments& args) {
135135

136136
if (args[2]->IsTrue()) events |= EV_WRITE;
137137

138+
assert(!io->watcher_.active);
138139
ev_io_set(&io->watcher_, fd, events);
139140

140141
return Undefined();

0 commit comments

Comments
 (0)