nbytes -= total;
buffer = (char *)buffer + total;
- // If the socket is invalid or we got all the data, return now
- if (!m_socket || !nbytes)
+ // Return now in one of the following cases:
+ // - the socket is invalid,
+ // - we got all the data,
+ // - we got *some* data and we are not using wxSOCKET_WAITALL.
+ if ( !m_socket ||
+ !nbytes ||
+ ((total != 0) && !(m_flags & wxSOCKET_WAITALL)) )
return total;
// Possible combinations (they are checked in this order)
break;
ret = GSocket_Write(m_socket, (const char *)buffer, nbytes);
-
+
if (ret > 0)
{
total += ret;
{
m_connected = FALSE;
m_establishing = FALSE;
- return (flags & GSOCK_LOST_FLAG);
+ return (flags & GSOCK_LOST_FLAG) != 0;
}
// Wait more?
// Schedule the event
- wxSocketEventFlags flag = -1;
+ wxSocketEventFlags flag = 0;
switch (notification)
{
case GSOCK_INPUT: flag = GSOCK_INPUT_FLAG; break;
case GSOCK_OUTPUT: flag = GSOCK_OUTPUT_FLAG; break;
case GSOCK_CONNECTION: flag = GSOCK_CONNECTION_FLAG; break;
case GSOCK_LOST: flag = GSOCK_LOST_FLAG; break;
+ default:
+ wxLogWarning( _("wxSocket: unknown event!."));
+ return;
}
if (((m_eventmask & flag) == flag) && m_notify)