From 2ec0624c6b7f4ab5b36fed06b479146737818b96 Mon Sep 17 00:00:00 2001 From: bossiel Date: Wed, 20 May 2015 19:45:51 +0000 Subject: [PATCH] Check cfstream status when open fails before breaking the process --- .../tinyNET/src/tnet_transport_cfsocket.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/branches/2.0/doubango/tinyNET/src/tnet_transport_cfsocket.c b/branches/2.0/doubango/tinyNET/src/tnet_transport_cfsocket.c index 0d1b2c13..1e045505 100644 --- a/branches/2.0/doubango/tinyNET/src/tnet_transport_cfsocket.c +++ b/branches/2.0/doubango/tinyNET/src/tnet_transport_cfsocket.c @@ -1069,12 +1069,20 @@ int wrapSocket(tnet_transport_t *transport, transport_socket_xt *sock) // Open streams if (!CFReadStreamOpen(sock->cf_read_stream)) { - TSK_DEBUG_ERROR("CFReadStreamOpen(fd=%d) failed", sock->fd); - return -1; + CFStreamStatus status = CFReadStreamGetStatus(sock->cf_read_stream); + if (status != kCFStreamStatusOpen && status != kCFStreamStatusOpening && status != kCFStreamStatusReading) { + TSK_DEBUG_ERROR("CFReadStreamOpen(fd=%d) failed with status=%ld", sock->fd, status); + return -1; + } + TSK_DEBUG_INFO("CFReadStreamOpen(fd=%d) returned with status=%ld", sock->fd, status); } if (!CFWriteStreamOpen(sock->cf_write_stream)) { - TSK_DEBUG_ERROR("CFWriteStreamOpen(fd=%d) failed", sock->fd); - return -1; + CFStreamStatus status = CFWriteStreamGetStatus(sock->cf_write_stream); + if (status != kCFStreamStatusOpen && status != kCFStreamStatusOpening && status != kCFStreamStatusWriting) { + TSK_DEBUG_ERROR("CFWriteStreamOpen(fd=%d) failed with status=%ld", sock->fd, status); + return -1; + } + TSK_DEBUG_INFO("CFWriteStreamOpen(fd=%d) returned with status=%ld", sock->fd, status); } } }