-
Notifications
You must be signed in to change notification settings - Fork 51
Closed
Labels
conclusion: resolvedIssue was resolvedIssue was resolvedtopic: codeRelated to content of the project itselfRelated to content of the project itselftype: imperfectionPerceived defect in any part of projectPerceived defect in any part of project
Description
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);
Metadata
Metadata
Assignees
Labels
conclusion: resolvedIssue was resolvedIssue was resolvedtopic: codeRelated to content of the project itselfRelated to content of the project itselftype: imperfectionPerceived defect in any part of projectPerceived defect in any part of project