diff --git a/src/common.c b/src/common.c index abffdf2..29ecfa1 100644 --- a/src/common.c +++ b/src/common.c @@ -488,8 +488,8 @@ int connectwithpoll(struct clientparam *param, SOCKET sock, struct sockaddr *sa, if(!errno) return 0; memset(fds, 0, sizeof(fds)); fds[0].fd = sock; - fds[0].events = POLLOUT|POLLIN; - if((param?param->srv->so._poll(param->sostate, fds, 1, to*1000):so._poll(so.state, fds, 1, to*1000)) <= 0 || !(fds[0].revents & POLLOUT)) { + fds[0].events = POLLOUT|POLLIN|POLLERR|POLLHUP; + if((param?param->srv->so._poll(param->sostate, fds, 1, to*1000):so._poll(so.state, fds, 1, to*1000)) <= 0 || !(fds[0].revents & POLLOUT) || (fds[0].revents & (POLLERR|POLLHUP))) { return (13); } return 0;