From 1f20313e728326d321f48a41fe0aa59bc7fada86 Mon Sep 17 00:00:00 2001 From: Stelian Ionescu Date: Fri, 28 May 2010 18:43:20 +0800 Subject: [PATCH] Fix CONNECT to signal a SOCKET-ERROR when getting a POLL-ERROR --- src/sockets/socket-methods.lisp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/sockets/socket-methods.lisp b/src/sockets/socket-methods.lisp index f9529ca..4154bd0 100644 --- a/src/sockets/socket-methods.lisp +++ b/src/sockets/socket-methods.lisp @@ -318,10 +318,13 @@ ((wait-connect () (when (or (null timeout) (plusp timeout)) - (iomux:wait-until-fd-ready (fd-of socket) :output timeout t) - (let ((errcode (socket-option socket :error))) - (unless (zerop errcode) - (signal-socket-error errcode "connect" (fd-of socket))))))) + (handler-case + (iomux:wait-until-fd-ready (fd-of socket) :output timeout t) + (iomux:poll-error () + (let ((errcode (socket-option socket :error))) + (if (zerop errcode) + (bug "Polling socket signalled an error but SO_ERROR is 0") + (signal-socket-error errcode "connect" (fd-of socket))))))))) (ignore-some-conditions (iomux:poll-timeout) (handler-case (funcall thunk) -- 2.11.4.GIT