Skip to content

failed to send a long data ( > 512bytes ) #60

Closed
@etakata

Description

@etakata

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:

  1. User calls write(buf, 600)
  2. First time execution in the while loop
    • br_sslio_write() sends 512 bytes from &buf[0] and returns 512, buf points at &buf[512], written = 512
  3. written < size is true
  4. Second time execution in the while loop
    • br_sslio_write() sends 512 bytes from &buf[512] and returns 512, buf points at &buf[1024], written = 1024
  5. written < size is false and escaping from the loop
  6. write() 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

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions