Fixed bug in sslh-select: if socket dropped while defered_data was present, sslh-select would crash.

This commit is contained in:
Yves Rutschle 2013-07-20 00:45:33 +02:00
parent f842e2e081
commit d02ffcd154
2 changed files with 11 additions and 6 deletions

View File

@ -1,3 +1,7 @@
vNEXT:
Fixed bug in sslh-select: if socket dropped while
defered_data was present, sslh-select would crash.
v1.14: 21DEC2012
Corrected OpenVPN probe to support pre-shared secret
mode (OpenVPN port-sharing code is... wrong). Thanks

View File

@ -261,12 +261,13 @@ void main_loop(int listen_sockets[], int num_addr_listen)
tidy_connection(&cnx[i], &fds_r, &fds_w);
if (verbose)
fprintf(stderr, "closed slot %d\n", i);
}
/* If no defered data is left, stop monitoring the fd
* for write, and restart monitoring the other one for reads*/
if (!cnx[i].q[j].defered_data_size) {
FD_CLR(cnx[i].q[j].fd, &fds_w);
FD_SET(cnx[i].q[1-j].fd, &fds_r);
} else {
/* If no defered data is left, stop monitoring the fd
* for write, and restart monitoring the other one for reads*/
if (!cnx[i].q[j].defered_data_size) {
FD_CLR(cnx[i].q[j].fd, &fds_w);
FD_SET(cnx[i].q[1-j].fd, &fds_r);
}
}
}
}