mirror of
https://github.com/esp8266/Arduino.git
synced 2025-07-30 16:24:09 +03:00
An improved patch for the Client part of issue 416 (adding a multi-byte read). This one moves all of the checking into recv, so that single-byte reads also benefit. It also returns -1 if there's no data available unless we've reached EOF, in which case it returns 0.
This commit is contained in:
@ -146,14 +146,18 @@ uint16_t send(SOCKET s, const uint8_t * buf, uint16_t len)
|
||||
*/
|
||||
uint16_t recv(SOCKET s, uint8_t *buf, uint16_t len)
|
||||
{
|
||||
uint16_t ret=0;
|
||||
|
||||
if ( len > 0 )
|
||||
// Check how much data is available
|
||||
uint16_t ret = W5100.getRXReceivedSize(s);
|
||||
if (ret > len)
|
||||
{
|
||||
W5100.recv_data_processing(s, buf, len);
|
||||
W5100.execCmdSn(s, Sock_RECV);
|
||||
ret = len;
|
||||
}
|
||||
|
||||
if ( ret > 0 )
|
||||
{
|
||||
W5100.recv_data_processing(s, buf, ret);
|
||||
W5100.execCmdSn(s, Sock_RECV);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user