diff options
author | Matt Johnston <matt@ucc.asn.au> | 2005-07-18 14:32:52 +0000 |
---|---|---|
committer | Matt Johnston <matt@ucc.asn.au> | 2005-07-18 14:32:52 +0000 |
commit | bfbe624301cb1dc0eef9dc00c235edb339e98082 (patch) | |
tree | 7539060f852ea180fe550525412f7345a464adba /dbutil.c | |
parent | 03f634b8a8c00e58528fab21718df514a60d8829 (diff) | |
download | dropbear-bfbe624301cb1dc0eef9dc00c235edb339e98082.tar.gz |
- progress towards client agent forwarding
(incomplete and does not compile)
Diffstat (limited to 'dbutil.c')
-rw-r--r-- | dbutil.c | 27 |
1 files changed, 18 insertions, 9 deletions
@@ -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) { |