summaryrefslogtreecommitdiff
path: root/src/listener.c
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2010-11-28 23:24:16 +0000
committerChristian Pointner <equinox@spreadspace.org>2010-11-28 23:24:16 +0000
commit64ef9b77afabde7f0856d908489a5255107606ff (patch)
treea80035ed6f920e09f1c08762c831bd2479c83aba /src/listener.c
parentreplaced inet_ntop with getnameinfo (diff)
added length field to tcp_endpoint_t
git-svn-id: https://svn.spreadspace.org/tcpproxy/trunk@15 e61f0598-a718-4e21-a8f0-0aadfa62ad6b
Diffstat (limited to 'src/listener.c')
-rw-r--r--src/listener.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/listener.c b/src/listener.c
index 5e34c3d..0f7f937 100644
--- a/src/listener.c
+++ b/src/listener.c
@@ -101,15 +101,20 @@ int listener_add(listeners_t* list, const char* laddr, const char* lport, const
ret = -2;
break;
}
- memset(&(element->remote_end_), 0, sizeof(element->remote_end_));
- memcpy(&(element->remote_end_), re->ai_addr, re->ai_addrlen);
-
- memset(&(element->source_end_), 0, sizeof(element->source_end_));
- if(se) memcpy(&(element->source_end_), se->ai_addr, se->ai_addrlen);
- else element->source_end_.ss_family = AF_UNSPEC;
+ memset(&(element->remote_end_.addr_), 0, sizeof(element->remote_end_.addr_));
+ memcpy(&(element->remote_end_.addr_), re->ai_addr, re->ai_addrlen);
+ element->remote_end_.len_ = re->ai_addrlen;
+
+ memset(&(element->source_end_.addr_), 0, sizeof(element->source_end_.addr_));
+ if(se) {
+ memcpy(&(element->source_end_.addr_), se->ai_addr, se->ai_addrlen);
+ element->source_end_.len_ = se->ai_addrlen;
+ }
+ else element->source_end_.addr_.ss_family = AF_UNSPEC;
- memset(&(element->local_end_), 0, sizeof(element->local_end_));
- memcpy(&(element->local_end_), l->ai_addr, l->ai_addrlen);
+ memset(&(element->local_end_.addr_), 0, sizeof(element->local_end_.addr_));
+ memcpy(&(element->local_end_.addr_), l->ai_addr, l->ai_addrlen);
+ element->local_end_.len_ = l->ai_addrlen;
element->fd_ = socket(l->ai_family, SOCK_STREAM, 0);
if(element->fd_ < 0) {
@@ -249,7 +254,7 @@ int listener_handle_accept(listeners_t* list, clients_t* clients, fd_set* set)
if(rs) free(rs);
FD_CLR(l->fd_, set);
- clients_add(clients, new_client, &(l->remote_end_), &(l->source_end_));
+ clients_add(clients, new_client, l->remote_end_, l->source_end_);
}
tmp = tmp->next_;
}