mirror of
https://github.com/nginx/nginx.git
synced 2024-12-12 18:29:00 +08:00
QUIC: speeding up handshake completion.
As per quic-recovery draft, section-6.2.3: resend CRYPTO frames when receiving an Initial packet containing duplicate CRYPTO data.
This commit is contained in:
parent
b64446f6f9
commit
7bd3868715
@ -2661,7 +2661,7 @@ ngx_quic_handle_ordered_frame(ngx_connection_t *c, ngx_quic_frames_stream_t *fs,
|
|||||||
== NGX_DONE)
|
== NGX_DONE)
|
||||||
{
|
{
|
||||||
/* old/duplicate data range */
|
/* old/duplicate data range */
|
||||||
return NGX_OK;
|
return handler == ngx_quic_crypto_input ? NGX_DECLINED : NGX_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* intersecting data range, frame modified */
|
/* intersecting data range, frame modified */
|
||||||
@ -2844,6 +2844,7 @@ ngx_quic_handle_crypto_frame(ngx_connection_t *c, ngx_quic_header_t *pkt,
|
|||||||
ngx_quic_frame_t *frame)
|
ngx_quic_frame_t *frame)
|
||||||
{
|
{
|
||||||
uint64_t last;
|
uint64_t last;
|
||||||
|
ngx_int_t rc;
|
||||||
ngx_quic_connection_t *qc;
|
ngx_quic_connection_t *qc;
|
||||||
ngx_quic_crypto_frame_t *f;
|
ngx_quic_crypto_frame_t *f;
|
||||||
ngx_quic_frames_stream_t *fs;
|
ngx_quic_frames_stream_t *fs;
|
||||||
@ -2860,8 +2861,19 @@ ngx_quic_handle_crypto_frame(ngx_connection_t *c, ngx_quic_header_t *pkt,
|
|||||||
return NGX_ERROR;
|
return NGX_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ngx_quic_handle_ordered_frame(c, fs, frame, ngx_quic_crypto_input,
|
rc = ngx_quic_handle_ordered_frame(c, fs, frame, ngx_quic_crypto_input,
|
||||||
NULL);
|
NULL);
|
||||||
|
if (rc != NGX_DECLINED) {
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* speeding up handshake completion */
|
||||||
|
|
||||||
|
if (pkt->level == ssl_encryption_initial) {
|
||||||
|
ngx_quic_resend_frames(c, ngx_quic_get_send_ctx(qc, pkt->level));
|
||||||
|
}
|
||||||
|
|
||||||
|
return NGX_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user