1
1

channel_write: if data has been sent, don't return EAGAIN

When sending data in a loop, we must not return EAGAIN if we
managed to send data in an earlier round. This was reported in
bug #126 => http://libssh2.stuge.se/ticket/126
Этот коммит содержится в:
Daniel Stenberg 2010-04-14 23:34:06 +02:00
родитель 77fa740674
Коммит 8b63dc9e59

Просмотреть файл

@ -2038,6 +2038,11 @@ _libssh2_channel_write(LIBSSH2_CHANNEL *channel, int stream_id,
channel->write_s -
channel->write_packet);
if (rc == PACKET_EAGAIN) {
if(wrote)
/* some pieces of data was sent before the EAGAIN so
we return that amount! */
goto _channel_write_done;
return libssh2_error(session, rc,
"Unable to send channel data");
}
@ -2061,6 +2066,8 @@ _libssh2_channel_write(LIBSSH2_CHANNEL *channel, int stream_id,
}
}
_channel_write_done:
LIBSSH2_FREE(session, channel->write_packet);
channel->write_packet = NULL;