mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
tag UDP ports in use properly so they get closed correctly (#1508)
* tag ports in use properly so they get closed correctly to close #1470 * redo test for udp port in use * check port in use correctly on close
This commit is contained in:
parent
915d73e6f2
commit
a3640bd9bf
@ -125,8 +125,8 @@ module.exports = function(RED) {
|
|||||||
if (process.version.indexOf("v0.10") === 0) { opts = node.ipv; }
|
if (process.version.indexOf("v0.10") === 0) { opts = node.ipv; }
|
||||||
|
|
||||||
var sock;
|
var sock;
|
||||||
if (udpInputPortsInUse[this.outport]) {
|
if (udpInputPortsInUse[this.outport || this.port]) {
|
||||||
sock = udpInputPortsInUse[this.outport];
|
sock = udpInputPortsInUse[this.outport || this.port];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
sock = dgram.createSocket(opts); // default to udp4
|
sock = dgram.createSocket(opts); // default to udp4
|
||||||
@ -136,7 +136,7 @@ module.exports = function(RED) {
|
|||||||
// prevent it going to the global error handler and shutting node-red
|
// prevent it going to the global error handler and shutting node-red
|
||||||
// down.
|
// down.
|
||||||
});
|
});
|
||||||
udpInputPortsInUse[this.outport] = sock;
|
udpInputPortsInUse[this.outport || this.port] = sock;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (node.multicast != "false") {
|
if (node.multicast != "false") {
|
||||||
@ -161,7 +161,7 @@ module.exports = function(RED) {
|
|||||||
node.log(RED._("udp.status.bc-ready",{outport:node.outport,host:node.addr,port:node.port}));
|
node.log(RED._("udp.status.bc-ready",{outport:node.outport,host:node.addr,port:node.port}));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else if ((node.outport !== "") && (!udpInputPortsInUse[this.outport])) {
|
} else if ((node.outport !== "") && (!udpInputPortsInUse[node.outport])) {
|
||||||
sock.bind(node.outport);
|
sock.bind(node.outport);
|
||||||
node.log(RED._("udp.status.ready",{outport:node.outport,host:node.addr,port:node.port}));
|
node.log(RED._("udp.status.ready",{outport:node.outport,host:node.addr,port:node.port}));
|
||||||
} else {
|
} else {
|
||||||
@ -198,8 +198,8 @@ module.exports = function(RED) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
node.on("close", function() {
|
node.on("close", function() {
|
||||||
if (udpInputPortsInUse.hasOwnProperty(node.outport)) {
|
if (udpInputPortsInUse.hasOwnProperty(node.outport || node.port)) {
|
||||||
delete udpInputPortsInUse[node.outport];
|
delete udpInputPortsInUse[node.outport || node.port];
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
sock.close();
|
sock.close();
|
||||||
|
Loading…
Reference in New Issue
Block a user