work arround for gnutls DTLS fragment bug

This commit is contained in:
Andreas Schultz 2014-12-30 15:36:38 +01:00
parent 2f0f57da49
commit 90c98f4a83
1 changed files with 8 additions and 0 deletions

View File

@ -422,6 +422,9 @@ static void dtls_forward(struct dtls_session *recv, struct dtls_session *send_s,
recv->buffer_len = len;
if (!recv->handshake_done) {
int try_it_again = 1;
again:
do {
ret = gnutls_handshake(recv->session);
debug("DTLS handshake on session %p, fd %d, got %d", recv, recv->fd, ret);
@ -433,6 +436,11 @@ static void dtls_forward(struct dtls_session *recv, struct dtls_session *send_s,
gnutls_deinit(recv->session);
return;
}
else if (try_it_again) {
try_it_again = 0;
goto again;
}
}
if (ret == GNUTLS_E_SUCCESS) {
recv->handshake_done = 1;