summaryrefslogtreecommitdiff
path: root/dbutil.c
diff options
context:
space:
mode:
authorMatt Johnston <matt@ucc.asn.au>2005-07-18 14:32:52 +0000
committerMatt Johnston <matt@ucc.asn.au>2005-07-18 14:32:52 +0000
commitbfbe624301cb1dc0eef9dc00c235edb339e98082 (patch)
tree7539060f852ea180fe550525412f7345a464adba /dbutil.c
parent03f634b8a8c00e58528fab21718df514a60d8829 (diff)
downloaddropbear-bfbe624301cb1dc0eef9dc00c235edb339e98082.tar.gz
- progress towards client agent forwarding
(incomplete and does not compile)
Diffstat (limited to 'dbutil.c')
-rw-r--r--dbutil.c27
1 files changed, 18 insertions, 9 deletions
diff --git a/dbutil.c b/dbutil.c
index 45c720e..fdac66a 100644
--- a/dbutil.c
+++ b/dbutil.c
@@ -252,6 +252,23 @@ int dropbear_listen(const char* address, const char* port,
return nsock;
}
+/* Connect to a given unix socket. The socket is not non-blocking */
+#ifdef ENABLE_CONNECT_UNIX
+int connect_unix(const char* addr)
+{
+ struct sockaddr_un egdsock;
+ int fd = -1;
+
+ memset((void*)&egdsock, 0x0, sizeof(egdsock));
+ egdsock.sun_family = AF_UNIX;
+ strlcpy(egdsock.sun_path, addr, sizeof(egdsock.sun_path));
+
+ fd = socket(PF_UNIX, SOCK_STREAM, 0);
+
+ return fd;
+}
+#endif
+
/* Connect via TCP to a host. Connection will try ipv4 or ipv6, will
* return immediately if nonblocking is set. On failure, if errstring
* wasn't null, it will be a newly malloced error message */
@@ -297,15 +314,7 @@ int connect_remote(const char* remotehost, const char* remoteport,
}
if (nonblocking) {
- if (fcntl(sock, F_SETFL, O_NONBLOCK) < 0) {
- close(sock);
- sock = -1;
- if (errstring != NULL && *errstring == NULL) {
- *errstring = m_strdup("Failed non-blocking");
- }
- TRACE(("Failed non-blocking: %s", strerror(errno)))
- continue;
- }
+ setnonblocking(sock);
}
if (connect(sock, res->ai_addr, res->ai_addrlen) < 0) {