diff options
-rw-r--r-- | toxcore/TCP_server.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/toxcore/TCP_server.c b/toxcore/TCP_server.c index 6d2ab62b..e5a154ce 100644 --- a/toxcore/TCP_server.c +++ b/toxcore/TCP_server.c | |||
@@ -1192,7 +1192,7 @@ static void do_TCP_epoll(TCP_Server *TCP_server) | |||
1192 | sock_t sock = events[n].data.u64 & 0xFFFFFFFF; | 1192 | sock_t sock = events[n].data.u64 & 0xFFFFFFFF; |
1193 | int status = (events[n].data.u64 >> 32) & 0xFFFF, index = (events[n].data.u64 >> 48); | 1193 | int status = (events[n].data.u64 >> 32) & 0xFFFF, index = (events[n].data.u64 >> 48); |
1194 | 1194 | ||
1195 | if ((events[n].events & EPOLLERR) || (events[n].events & EPOLLHUP)) { | 1195 | if ((events[n].events & EPOLLERR) || (events[n].events & EPOLLHUP) || (events[n].events & EPOLLRDHUP)) { |
1196 | switch (status) { | 1196 | switch (status) { |
1197 | case TCP_SOCKET_LISTENING: { | 1197 | case TCP_SOCKET_LISTENING: { |
1198 | //should never happen | 1198 | //should never happen |
@@ -1239,7 +1239,7 @@ static void do_TCP_epoll(TCP_Server *TCP_server) | |||
1239 | } | 1239 | } |
1240 | 1240 | ||
1241 | struct epoll_event ev = { | 1241 | struct epoll_event ev = { |
1242 | .events = EPOLLIN | EPOLLET, | 1242 | .events = EPOLLIN | EPOLLET | EPOLLRDHUP, |
1243 | .data.u64 = sock_new | ((uint64_t)TCP_SOCKET_INCOMING << 32) | ((uint64_t)index_new << 48) | 1243 | .data.u64 = sock_new | ((uint64_t)TCP_SOCKET_INCOMING << 32) | ((uint64_t)index_new << 48) |
1244 | }; | 1244 | }; |
1245 | 1245 | ||
@@ -1255,7 +1255,7 @@ static void do_TCP_epoll(TCP_Server *TCP_server) | |||
1255 | int index_new; | 1255 | int index_new; |
1256 | 1256 | ||
1257 | if ((index_new = do_incoming(TCP_server, index)) != -1) { | 1257 | if ((index_new = do_incoming(TCP_server, index)) != -1) { |
1258 | events[n].events = EPOLLIN | EPOLLET; | 1258 | events[n].events = EPOLLIN | EPOLLET | EPOLLRDHUP; |
1259 | events[n].data.u64 = sock | ((uint64_t)TCP_SOCKET_UNCONFIRMED << 32) | ((uint64_t)index_new << 48); | 1259 | events[n].data.u64 = sock | ((uint64_t)TCP_SOCKET_UNCONFIRMED << 32) | ((uint64_t)index_new << 48); |
1260 | 1260 | ||
1261 | if (epoll_ctl(TCP_server->efd, EPOLL_CTL_MOD, sock, &events[n]) == -1) { | 1261 | if (epoll_ctl(TCP_server->efd, EPOLL_CTL_MOD, sock, &events[n]) == -1) { |
@@ -1271,7 +1271,7 @@ static void do_TCP_epoll(TCP_Server *TCP_server) | |||
1271 | int index_new; | 1271 | int index_new; |
1272 | 1272 | ||
1273 | if ((index_new = do_unconfirmed(TCP_server, index)) != -1) { | 1273 | if ((index_new = do_unconfirmed(TCP_server, index)) != -1) { |
1274 | events[n].events = EPOLLIN | EPOLLET; | 1274 | events[n].events = EPOLLIN | EPOLLET | EPOLLRDHUP; |
1275 | events[n].data.u64 = sock | ((uint64_t)TCP_SOCKET_CONFIRMED << 32) | ((uint64_t)index_new << 48); | 1275 | events[n].data.u64 = sock | ((uint64_t)TCP_SOCKET_CONFIRMED << 32) | ((uint64_t)index_new << 48); |
1276 | 1276 | ||
1277 | if (epoll_ctl(TCP_server->efd, EPOLL_CTL_MOD, sock, &events[n]) == -1) { | 1277 | if (epoll_ctl(TCP_server->efd, EPOLL_CTL_MOD, sock, &events[n]) == -1) { |