From: Tatsuhiro Tsujikawa Date: Mon, 3 Apr 2017 13:17:58 +0000 (+0100) Subject: Restore s->early_data_state with the original value X-Git-Tag: OpenSSL_1_1_1-pre1~1881 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=bbea9f2c5f6a134505a899383c22098f3406c5f5;p=oweals%2Fopenssl.git Restore s->early_data_state with the original value Reviewed-by: Rich Salz Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/3091) --- diff --git a/ssl/ssl_lib.c b/ssl/ssl_lib.c index 61e1a7a4c8..5b5bff1faa 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);