From da893bf61f1f4a379a4acf155232afdd1bae4df5 Mon Sep 17 00:00:00 2001 From: Georg Hopp Date: Thu, 31 Jul 2014 22:03:05 +0100 Subject: [PATCH] fix retrieval of remote socket information --- src/socket_accept.c | 13 +++++++------ src/tcp_socket.c | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/socket_accept.c b/src/socket_accept.c index cf76ef5..2582128 100644 --- a/src/socket_accept.c +++ b/src/socket_accept.c @@ -43,7 +43,8 @@ TR_socketAccept(TR_TcpSocket this) TR_Socket remote = TR_new(TR_TcpSocket, TR_socketLog(this), NULL, 0, 0); //int flags; - remote->handle = accept( + remote->addrlen = ((TR_Socket)this)->addrlen; + remote->handle = accept( TR_socketHandle(this), (struct sockaddr *)&(remote->addr), &(remote->addrlen)); @@ -51,14 +52,14 @@ TR_socketAccept(TR_TcpSocket this) //flags = fcntl(remote->handle, F_GETFL, 0); //fcntl(remote->handle, F_SETFL, flags | O_NONBLOCK); - remote->host = TR_strdup(inet_ntoa(remote->addr.sin_addr)); - remote->port = ntohs(remote->addr.sin_port); - remote->type = TR_socketType(this); - remote->flags = TR_socketFlags(this); - if (-1 == remote->handle) { perror("accept"); TR_delete(remote); + } else { + remote->host = TR_strdup(inet_ntoa(remote->addr.sin_addr)); + remote->port = ntohs(remote->addr.sin_port); + remote->type = TR_socketType(this); + remote->flags = TR_socketFlags(this); } return (TR_TcpSocket)remote; diff --git a/src/tcp_socket.c b/src/tcp_socket.c index 293b41d..35bbc3f 100644 --- a/src/tcp_socket.c +++ b/src/tcp_socket.c @@ -61,7 +61,7 @@ tcpSocketBind(void * _this) return -1; } - if (listen(TR_socketHandle(this), 128) != 0) { + if (listen(TR_socketHandle(this), SOMAXCONN) != 0) { // error return -1; }