On 2015-04-11 23:23, Luka Perkov wrote: > Enable to write more data then defined in SSL_MAX_CONTENT_LEN. > > Signed-off-by: Luka Perkov <l...@openwrt.org> > --- > ustream-polarssl.c | 18 ++++++++++++------ > 1 file changed, 12 insertions(+), 6 deletions(-) > > diff --git a/ustream-polarssl.c b/ustream-polarssl.c > index cbf24cb..ce9b164 100644 > --- a/ustream-polarssl.c > +++ b/ustream-polarssl.c > @@ -232,14 +232,20 @@ __hidden enum ssl_conn_status > __ustream_ssl_connect(struct ustream_ssl *us) > __hidden int __ustream_ssl_write(struct ustream_ssl *us, const char *buf, > int len) > { > void *ssl = us->ssl; > - int ret = ssl_write(ssl, (const unsigned char *) buf, len); > + int done = 0, ret = 0; > > - if (ret < 0) { > - if (ssl_do_wait(ret)) > - return 0; > + while (done != len) { > + ret = ssl_write(ssl, (const unsigned char *) buf + done, len - > done); > > - ustream_ssl_error(us, ret); > - return -1; > + if (ret < 0) { > + if (ssl_do_wait(ret)) > + return 0; This does not look right. I think it should be 'return done', otherwise plaintext data will be duplicated if the first write succeeds but the second doesn't.
- Felix _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel