diff --git a/tcp.c b/tcp.c index df02755f..cdf55219 100644 --- a/tcp.c +++ b/tcp.c @@ -584,6 +584,10 @@ tcp_server_callback(int events, void *opaque, int fd) ses->tcp_server = srv; memcpy(&ses->tcp_peer_addr, &from, socklen); + socklen = sizeof(struct sockaddr_storage); + if(getsockname(newfd, (struct sockaddr *)&ses->tcp_self_addr, &socklen)) + memset(&ses->tcp_self_addr, 0, sizeof(struct sockaddr_storage)); + tcp_start_session(ses); } diff --git a/tcp.h b/tcp.h index 5300fc1b..231ac621 100644 --- a/tcp.h +++ b/tcp.h @@ -56,6 +56,7 @@ typedef struct tcp_session { void *tcp_dispatch_handle; int tcp_fd; struct sockaddr_storage tcp_peer_addr; + struct sockaddr_storage tcp_self_addr; char tcp_peer_txt[100]; tcp_callback_t *tcp_callback; tcp_server_t *tcp_server; /* if this is NULL, then we are spawned