mirror of
https://github.com/esp8266/Arduino.git
synced 2025-06-06 05:21:22 +03:00
Merge pull request #1289 from gtalusan/short_writes
handle short writes
This commit is contained in:
commit
1c7b81660b
@ -25,14 +25,10 @@
|
|||||||
|
|
||||||
size_t StreamString::write(const uint8_t *buffer, size_t size) {
|
size_t StreamString::write(const uint8_t *buffer, size_t size) {
|
||||||
if(reserve(length() + size + 1)) {
|
if(reserve(length() + size + 1)) {
|
||||||
for(size_t i = 0; i < size; i++) {
|
const uint8_t *s = buffer;
|
||||||
if(write(*buffer)) {
|
const uint8_t *end = buffer + size;
|
||||||
buffer++;
|
while(write(*s++) && s < end);
|
||||||
} else {
|
return s - buffer;
|
||||||
return i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -363,7 +363,12 @@ int HTTPClient::sendRequest(const char * type, Stream * stream, size_t size) {
|
|||||||
int c = stream->readBytes(buff, ((s > buff_size) ? buff_size : s));
|
int c = stream->readBytes(buff, ((s > buff_size) ? buff_size : s));
|
||||||
|
|
||||||
// write it to Stream
|
// write it to Stream
|
||||||
bytesWritten += _tcp->write((const uint8_t *) buff, c);
|
int w = _tcp->write((const uint8_t *) buff, c);
|
||||||
|
if(w != c) {
|
||||||
|
DEBUG_HTTPCLIENT("[HTTP-Client][sendRequest] short write asked for %d but got %d\n", c, w);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
bytesWritten += c;
|
||||||
|
|
||||||
if(len > 0) {
|
if(len > 0) {
|
||||||
len -= c;
|
len -= c;
|
||||||
@ -470,7 +475,12 @@ int HTTPClient::writeToStream(Stream * stream) {
|
|||||||
int c = _tcp->readBytes(buff, ((size > buff_size) ? buff_size : size));
|
int c = _tcp->readBytes(buff, ((size > buff_size) ? buff_size : size));
|
||||||
|
|
||||||
// write it to Stream
|
// write it to Stream
|
||||||
bytesWritten += stream->write(buff, c);
|
int w = stream->write(buff, c);
|
||||||
|
if(w != c) {
|
||||||
|
DEBUG_HTTPCLIENT("[HTTP-Client][writeToStream] short write asked for %d but got %d\n", c, w);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
bytesWritten += c;
|
||||||
|
|
||||||
if(len > 0) {
|
if(len > 0) {
|
||||||
len -= c;
|
len -= c;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user