return WRITE_TRAN_ERROR;
case TLS_ST_OK:
- if (s->early_data_state == SSL_EARLY_DATA_FINISHED_READING) {
- st->hand_state = TLS_ST_SW_FINISHED;
- return WRITE_TRAN_FINISHED;
- }
if (s->key_update != SSL_KEY_UPDATE_NONE) {
st->hand_state = TLS_ST_SW_KEY_UPDATE;
return WRITE_TRAN_CONTINUE;
return WRITE_TRAN_CONTINUE;
case TLS_ST_SW_FINISHED:
- if (s->early_data_state == SSL_EARLY_DATA_ACCEPTING) {
- st->hand_state = TLS_ST_EARLY_DATA;
- return WRITE_TRAN_CONTINUE;
- }
- return WRITE_TRAN_FINISHED;
+ st->hand_state = TLS_ST_EARLY_DATA;
+ return WRITE_TRAN_CONTINUE;
case TLS_ST_EARLY_DATA:
return WRITE_TRAN_FINISHED;
return WORK_FINISHED_CONTINUE;
case TLS_ST_EARLY_DATA:
+ if (s->early_data_state != SSL_EARLY_DATA_ACCEPTING)
+ return WORK_FINISHED_CONTINUE;
+ /* Fall through */
+
case TLS_ST_OK:
return tls_finish_handshake(s, wst, 1);
}
*mt = SSL3_MT_FINISHED;
break;
+ case TLS_ST_EARLY_DATA:
+ *confunc = NULL;
+ *mt = SSL3_MT_DUMMY;
+ break;
+
case TLS_ST_SW_ENCRYPTED_EXTENSIONS:
*confunc = tls_construct_encrypted_extensions;
*mt = SSL3_MT_ENCRYPTED_EXTENSIONS;