mirror of
https://github.com/warmcat/libwebsockets.git
synced 2025-03-09 00:00:04 +01:00
connect: erase previous unusability when retrying connect
In the case that we try ipv6 that isn't routable, we get a POLLHUP, that marks the wsi as unusable (for writes, not pending reads), that's what we want. But in the case we go around and retry other dns results that are routable, we have to clear the wsi unusable flag. Otherwise we will connect and find that we can't write on the connection...
This commit is contained in:
parent
9d13b97e37
commit
9528acb4b8
2 changed files with 3 additions and 1 deletions
|
@ -430,7 +430,9 @@ ads_known:
|
|||
lws_metrics_caliper_bind(wsi->cal_conn, wsi->a.context->mt_conn_tcp);
|
||||
#endif
|
||||
|
||||
wsi->socket_is_permanently_unusable = 0;
|
||||
m = connect(wsi->desc.sockfd, (const struct sockaddr *)psa, (unsigned int)n);
|
||||
|
||||
if (m == -1) {
|
||||
/*
|
||||
* Since we're nonblocking, connect not having completed is not
|
||||
|
|
|
@ -672,7 +672,7 @@ lws_service_fd_tsi(struct lws_context *context, struct lws_pollfd *pollfd,
|
|||
* is possible.
|
||||
*/
|
||||
|
||||
if (pollfd->revents & LWS_POLLHUP) {
|
||||
if ((pollfd->revents & LWS_POLLHUP) == LWS_POLLHUP) {
|
||||
wsi->socket_is_permanently_unusable = 1;
|
||||
|
||||
if (!(pollfd->revents & pollfd->events & LWS_POLLIN)) {
|
||||
|
|
Loading…
Add table
Reference in a new issue