diff --git a/lib/client-handshake.c b/lib/client-handshake.c
index 7fa4f90cadf4fce15a6a0e34466a2990a0096feb..32681fe840bbfc4815093cf68dd022672ccf11da 100644
--- a/lib/client-handshake.c
+++ b/lib/client-handshake.c
@@ -278,6 +278,9 @@ lws_client_connect_2(struct lws *wsi)
 oom4:
 	/* we're closing, losing some rx is OK */
 	wsi->u.hdr.ah->rxpos = wsi->u.hdr.ah->rxlen;
+	/* take care that we might be inserted in fds already */
+	if (wsi->position_in_fds_table != -1)
+		goto failed;
 	lws_header_table_detach(wsi, 0);
 	lws_free(wsi);