From 5b9a4c0d43e78c7b83aa5703ed34291e3456db59 Mon Sep 17 00:00:00 2001 From: Andy Green Date: Fri, 28 Jan 2011 09:39:29 +0000 Subject: [PATCH] cleanup-proxy-code--add-timeout.patch Signed-off-by: Andy Green --- lib/client-handshake.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/lib/client-handshake.c b/lib/client-handshake.c index aa3fd6fb..e5d53510 100644 --- a/lib/client-handshake.c +++ b/lib/client-handshake.c @@ -191,22 +191,31 @@ libwebsocket_client_connect(struct libwebsocket_context *this, /* we are connected to server, or proxy */ - /* non-SSL connection */ - if (this->http_proxy_port) { n = send(wsi->sock, pkt, plen, 0); if (n < 0) { - fprintf(stderr, "ERROR writing to " - "proxy socket\n"); + close(wsi->sock); + fprintf(stderr, "ERROR writing to proxy socket\n"); + goto bail1; + } + + pfd.fd = wsi->sock; + pfd.events = POLLIN; + pfd.revents = 0; + + n = poll(&pfd, 1, 5000); + if (n <= 0) { + close(wsi->sock); + fprintf(stderr, "libwebsocket_client_handshake " + "timeout on proxy response"); goto bail1; } n = recv(wsi->sock, pkt, sizeof pkt, 0); if (n < 0) { close(wsi->sock); - fprintf(stderr, "ERROR reading from " - "proxy socket\n"); + fprintf(stderr, "ERROR reading from proxy socket\n"); goto bail1; }