From 8c98d12474fbd9e17732ff84c47e48c0cc100928 Mon Sep 17 00:00:00 2001
From: Andrew Johnston <apjohnsto@gmail.com>
Date: Tue, 25 May 2010 10:30:58 +0100
Subject: [PATCH] datagram support for socket connect
---
lib/net.js | 14 ++++++++++++--
src/node_net2.cc | 11 +++++++----
2 files changed, 19 insertions(+), 6 deletions(-)
mode change 100644 => 100755 lib/net.js
mode change 100644 => 100755 src/node_net2.cc
diff --git a/lib/net.js b/lib/net.js
old mode 100644
new mode 100755
index 4c9c525..dcc37a6
--- a/lib/net.js
+++ b/lib/net.js
@@ -780,13 +780,23 @@ Stream.prototype.connect = function () {
self.emit('error', err);
} else {
self.type = addressType == 4 ? 'tcp4' : 'tcp6';
- self.fd = socket(self.type);
+ if(arguments.length > 2) {
+ self.fd = socket(self.type, arguments[2]);
+ }
+ else {
+ self.fd = socket(self.type);
+ }
doConnect(self, port, ip);
}
});
} else {
// UNIX
- self.fd = socket('unix');
+ if(arguments.length > 2) {
+ self.fd = socket('unix', arguments[2]);
+ }
+ else {
+ self.fd = socket('unix');
+ }
self.type = 'unix';
doConnect(self, arguments[0]);
}
diff --git a/src/node_net2.cc b/src/node_net2.cc
old mode 100644
new mode 100755
index 076951e..74510ac
--- a/src/node_net2.cc
+++ b/src/node_net2.cc
@@ -132,21 +132,24 @@ static Handle<Value> Socket(const Arguments& args) {
int domain = PF_INET;
int type = SOCK_STREAM;
+ if (args.Length() > 1) {
+ String::Utf8Value t(args[1]->ToString());
+ if (0 == strcasecmp(*t, "DGRAM")) {
+ type = SOCK_DGRAM;
+ }
+ }
+
if (args[0]->IsString()) {
String::Utf8Value t(args[0]->ToString());
// FIXME optimize this cascade.
if (0 == strcasecmp(*t, "TCP")) {
domain = PF_INET;
- type = SOCK_STREAM;
} else if (0 == strcasecmp(*t, "TCP4")) {
domain = PF_INET;
- type = SOCK_STREAM;
} else if (0 == strcasecmp(*t, "TCP6")) {
domain = PF_INET6;
- type = SOCK_STREAM;
} else if (0 == strcasecmp(*t, "UNIX")) {
domain = PF_UNIX;
- type = SOCK_STREAM;
} else if (0 == strcasecmp(*t, "UDP")) {
domain = PF_INET6;
type = SOCK_DGRAM;
--
1.6.6.1