diff options
author | Christian Pointner <equinox@spreadspace.org> | 2010-11-28 23:24:16 +0000 |
---|---|---|
committer | Christian Pointner <equinox@spreadspace.org> | 2010-11-28 23:24:16 +0000 |
commit | 64ef9b77afabde7f0856d908489a5255107606ff (patch) | |
tree | a80035ed6f920e09f1c08762c831bd2479c83aba /src/listener.c | |
parent | replaced 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.c | 23 |
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_; } |