corrected DTLS data sending.

This commit is contained in:
Nikos Mavrogiannopoulos
2014-04-05 19:57:53 +02:00
parent f9968decf9
commit 374f8d52a9
2 changed files with 5 additions and 6 deletions

View File

@@ -72,11 +72,12 @@ ssize_t dtls_send_data(gnutls_session_t session, void *data,
{
int ret;
int left = data_size;
uint8_t* p = data;
uint8_t* p = data, *p1;
while(left > 0) {
*(p-1) = AC_PKT_DATA;
ret = gnutls_record_send(session, p-1, MIN(mtu, left+1));
p1 = p-1;
*(p1) = AC_PKT_DATA;
ret = gnutls_record_send(session, p1, MIN(mtu, left+1));
if (ret < 0 && (ret != GNUTLS_E_AGAIN && ret != GNUTLS_E_INTERRUPTED)) {
return ret;
}

View File

@@ -1230,9 +1230,7 @@ static int tun_mainloop(struct worker_st *ws, struct timespec *tnow)
oclog(ws, LOG_TRANSFER_DEBUG, "sending %d byte(s)\n", l);
if (ws->udp_state == UP_ACTIVE) {
ws->buffer[7] = AC_PKT_DATA;
ret = dtls_send_data(ws->dtls_session, ws->buffer + 7, l, ws->conn_mtu+1);
ret = dtls_send_data(ws->dtls_session, ws->buffer + 8, l, ws->conn_mtu+1);
GNUTLS_FATAL_ERR(ret);
if (ret == GNUTLS_E_LARGE_PACKET) {