diff --git a/ssl/ssl_lib.c b/ssl/ssl_lib.c index 61e1a7a4c808861611df133a3e14767d8e70c08e..5b5bff1faaaf93cfaf3226a9b75586109131d335 100644 --- a/ssl/ssl_lib.c +++ b/ssl/ssl_lib.c @@ -1830,12 +1830,14 @@ int SSL_write_early_data(SSL *s, const void *buf, size_t num, size_t *written) return ret; case SSL_EARLY_DATA_FINISHED_READING: - case SSL_EARLY_DATA_READ_RETRY: + case SSL_EARLY_DATA_READ_RETRY: { + int early_data_state = s->early_data_state; /* We are a server writing to an unauthenticated client */ s->early_data_state = SSL_EARLY_DATA_UNAUTH_WRITING; ret = SSL_write_ex(s, buf, num, written); - s->early_data_state = SSL_EARLY_DATA_READ_RETRY; + s->early_data_state = early_data_state; return ret; + } default: SSLerr(SSL_F_SSL_WRITE_EARLY_DATA, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);