Skip to content

Commit 375e5a6

Browse files
bschofieldrofl0r
authored andcommitted
Remove nugatory EC_TTL_EXPIRED error before idle connection closes.
In the case where connect_socks_target() succeeds, the proxy client receives an EC_SUCCESS message and the client thread passes control to copyloop(), which then proxies application-layer data. If both the client and remote connections are idle for too long, the call to poll() inside copyloop() returns zero, giving microsocks the opportunity to reap the inactive connection. Before closing the idle connection an EC_TTL_EXPIRED message is returned to the client. Since the client has already previously received EC_SUCCESS, it believes it is receiving application-layer data from the proxied target. This causes the user to receive a false \x05\x06\x00\x01\x00\x00\x00\x00\x00\x00 data sequence before the connection is closed. This commit removes the call to send_error() that returns the EC_TTL_EXPIRED message for an idle connection. An EC_TTL_EXPIRED error can still correctly be returned in the case where the initial socket() call to the remote address returns ETIMEDOUT. Fixes issue #53.
1 parent 2702f85 commit 375e5a6

File tree

1 file changed

+0
-1
lines changed

1 file changed

+0
-1
lines changed

sockssrv.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,6 @@ static void copyloop(int fd1, int fd2) {
273273
when a connection is really unused. */
274274
switch(poll(fds, 2, 60*15*1000)) {
275275
case 0:
276-
send_error(fd1, EC_TTL_EXPIRED);
277276
return;
278277
case -1:
279278
if(errno == EINTR || errno == EAGAIN) continue;

0 commit comments

Comments
 (0)