adjust SendData() output buffer check for DTLS header size

This commit is contained in:
John Safranek
2014-05-15 15:55:32 -07:00
parent 2bc066a116
commit 628e7b4d72

View File

@@ -5969,7 +5969,8 @@ int SendData(CYASSL* ssl, const void* data, int sz)
{ {
int sent = 0, /* plainText size */ int sent = 0, /* plainText size */
sendSz, sendSz,
ret; ret,
dtlsExtra = 0;
if (ssl->error == WANT_WRITE) if (ssl->error == WANT_WRITE)
ssl->error = 0; ssl->error = 0;
@@ -5997,6 +5998,12 @@ int SendData(CYASSL* ssl, const void* data, int sz)
} }
} }
#ifdef CYASSL_DTLS
if (ssl->options.dtls) {
dtlsExtra = DTLS_RECORD_EXTRA;
}
#endif
for (;;) { for (;;) {
#ifdef HAVE_MAX_FRAGMENT #ifdef HAVE_MAX_FRAGMENT
int len = min(sz - sent, min(ssl->max_fragment, OUTPUT_RECORD_SIZE)); int len = min(sz - sent, min(ssl->max_fragment, OUTPUT_RECORD_SIZE));
@@ -6021,7 +6028,7 @@ int SendData(CYASSL* ssl, const void* data, int sz)
/* check for available size */ /* check for available size */
if ((ret = CheckAvailableSize(ssl, len + COMP_EXTRA + if ((ret = CheckAvailableSize(ssl, len + COMP_EXTRA +
MAX_MSG_EXTRA)) != 0) dtlsExtra + MAX_MSG_EXTRA)) != 0)
return ssl->error = ret; return ssl->error = ret;
/* get ouput buffer */ /* get ouput buffer */