failed to send a long data ( > 512bytes )
etakata opened this issue · 3 comments
etakata commented
Hello team,
I failed to send a long data(> 512bytes), using BearSSLClient::write(const uint8_t *buf, size_t size)
Suppose that buf stored 600 bytes data and br_sslio_write() could send 512 bytes at maximum each call.
Call write(buf, 600)
Expected behavior
write() sends 600 bytes and returns 600
Current behavior
write() sends 1024 bytes and returns 1024
Detail:
- User calls
write(buf, 600) - First time execution in the
whileloopbr_sslio_write()sends 512 bytes from&buf[0]and returns 512, buf points at &buf[512], written = 512
written < sizeis true- Second time execution in the
whileloopbr_sslio_write()sends 512 bytes from&buf[512]and returns 512, buf points at &buf[1024], written = 1024
written < sizeis false and escaping from the loopwrite()returns 1024
To fix this issue, I'd like to change here
from:
int result = br_sslio_write(&_ioc, buf, size);
to:
int result = br_sslio_write(&_ioc, buf, size - written);
aentinger commented
Approved 👍 Can you please prepare a PR?
CC @pennam might be worth to integrate this change over at the ArduinoIoTCloud stack.
etakata commented