diff --git a/nodes/io/32-udp.html b/nodes/io/32-udp.html
index 331962ec8..7be9b7483 100644
--- a/nodes/io/32-udp.html
+++ b/nodes/io/32-udp.html
@@ -62,7 +62,7 @@
@@ -123,6 +123,7 @@
+
Tip: leave address and port blank if you want to set using msg.ip and msg.port.
@@ -157,10 +158,9 @@
color:"Silver",
defaults: {
name: {value:""},
- addr: {value:"",required:true},
- //group: {value:""},
+ addr: {value:""},
iface: {value:""},
- port: {value:"",required:true,validate:RED.validators.number()},
+ port: {value:""},
base64: {value:false,required:true},
multicast: {value:"false"}
},
diff --git a/nodes/io/32-udp.js b/nodes/io/32-udp.js
index 8666d655c..7470904cb 100644
--- a/nodes/io/32-udp.js
+++ b/nodes/io/32-udp.js
@@ -41,7 +41,7 @@ function UDPin(n) {
var msg;
if (node.datatype =="base64") { msg = { payload:message.toString('base64'), fromip:remote.address+':'+remote.port }; }
else if (node.datatype =="utf8") { msg = { payload:message.toString('utf8'), fromip:remote.address+':'+remote.port }; }
- else { msg = { payload:message, fromip:remote.address+':'+remote.port }; }
+ else { msg = { payload:message, fromip:remote.address+':'+remote.port, ip:remote.address, port:remote.port }; }
node.send(msg);
});
@@ -95,16 +95,21 @@ function UDPout(n) {
node.on("input", function(msg) {
if (msg.payload != null) {
- //console.log("UDP:",msg.payload);
- var add = msg.destip || node.addr;
- var por = msg.port || node.addr;
- var message;
- if (node.base64) { message = new Buffer(b64string, 'base64'); }
- else { message = new Buffer(""+msg.payload); }
- //console.log("UDP send :",add,por);
- sock.send(message, 0, message.length, por, add, function(err, bytes) {
- if (err) node.error("udp : "+err);
- });
+ var add = node.addr || msg.ip || "";
+ var por = node.port || msg.port || 0;
+ if (add == "") { node.warn("udp: ip address not set"); }
+ else if (por == 0) { node.warn("udp: port not set"); }
+ else if (isNaN(por) || (por < 1) || (por > 65535)) { node.warn("udp: port number not valid"); }
+ else {
+ var message;
+ if (node.base64) { message = new Buffer(b64string, 'base64'); }
+ else if (msg.payload instanceof Buffer) { message = msg.payload; }
+ else { message = new Buffer(""+msg.payload); }
+ console.log("UDP send :",add,por,msg.payload.toString());
+ sock.send(message, 0, message.length, por, add, function(err, bytes) {
+ if (err) node.error("udp : "+err);
+ });
+ }
}
});