Mercurial > hg > nginx-quic
comparison src/event/ngx_event_quic.c @ 7989:9ed4c12ec948 quic
QUIC: caching c->quic in the ngx_quic_handle_ack_frame() function.
To minimize difference with the following changes.
author | Vladimir Homutov <vl@nginx.com> |
---|---|
date | Mon, 13 Jul 2020 10:07:20 +0300 |
parents | 0d1ad81dd65c |
children | 3b15732ac03f |
comparison
equal
deleted
inserted
replaced
7988:0d1ad81dd65c | 7989:9ed4c12ec948 |
---|---|
2246 | 2246 |
2247 static ngx_int_t | 2247 static ngx_int_t |
2248 ngx_quic_handle_ack_frame(ngx_connection_t *c, ngx_quic_header_t *pkt, | 2248 ngx_quic_handle_ack_frame(ngx_connection_t *c, ngx_quic_header_t *pkt, |
2249 ngx_quic_ack_frame_t *ack) | 2249 ngx_quic_ack_frame_t *ack) |
2250 { | 2250 { |
2251 ssize_t n; | 2251 ssize_t n; |
2252 u_char *pos, *end; | 2252 u_char *pos, *end; |
2253 uint64_t gap, range; | 2253 uint64_t gap, range; |
2254 ngx_msec_t send_time; | 2254 ngx_msec_t send_time; |
2255 ngx_uint_t i, min, max; | 2255 ngx_uint_t i, min, max; |
2256 ngx_quic_send_ctx_t *ctx; | 2256 ngx_quic_send_ctx_t *ctx; |
2257 | 2257 ngx_quic_connection_t *qc; |
2258 ctx = ngx_quic_get_send_ctx(c->quic, pkt->level); | 2258 |
2259 qc = c->quic; | |
2260 | |
2261 ctx = ngx_quic_get_send_ctx(qc, pkt->level); | |
2259 | 2262 |
2260 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, | 2263 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, |
2261 "quic ngx_quic_handle_ack_frame level %d", pkt->level); | 2264 "quic ngx_quic_handle_ack_frame level %d", pkt->level); |
2262 | 2265 |
2263 /* | 2266 /* |
2265 * generate a connection error of type FRAME_ENCODING_ERROR. | 2268 * generate a connection error of type FRAME_ENCODING_ERROR. |
2266 * (19.3.1) | 2269 * (19.3.1) |
2267 */ | 2270 */ |
2268 | 2271 |
2269 if (ack->first_range > ack->largest) { | 2272 if (ack->first_range > ack->largest) { |
2270 c->quic->error = NGX_QUIC_ERR_FRAME_ENCODING_ERROR; | 2273 qc->error = NGX_QUIC_ERR_FRAME_ENCODING_ERROR; |
2271 ngx_log_error(NGX_LOG_INFO, c->log, 0, | 2274 ngx_log_error(NGX_LOG_INFO, c->log, 0, |
2272 "quic invalid first range in ack frame"); | 2275 "quic invalid first range in ack frame"); |
2273 return NGX_ERROR; | 2276 return NGX_ERROR; |
2274 } | 2277 } |
2275 | 2278 |
2311 return NGX_ERROR; | 2314 return NGX_ERROR; |
2312 } | 2315 } |
2313 pos += n; | 2316 pos += n; |
2314 | 2317 |
2315 if (gap >= min) { | 2318 if (gap >= min) { |
2316 c->quic->error = NGX_QUIC_ERR_FRAME_ENCODING_ERROR; | 2319 qc->error = NGX_QUIC_ERR_FRAME_ENCODING_ERROR; |
2317 ngx_log_error(NGX_LOG_INFO, c->log, 0, | 2320 ngx_log_error(NGX_LOG_INFO, c->log, 0, |
2318 "quic invalid range %ui in ack frame", i); | 2321 "quic invalid range %ui in ack frame", i); |
2319 return NGX_ERROR; | 2322 return NGX_ERROR; |
2320 } | 2323 } |
2321 | 2324 |
2322 max = min - 1 - gap; | 2325 max = min - 1 - gap; |
2323 | 2326 |
2324 if (range > max + 1) { | 2327 if (range > max + 1) { |
2325 c->quic->error = NGX_QUIC_ERR_FRAME_ENCODING_ERROR; | 2328 qc->error = NGX_QUIC_ERR_FRAME_ENCODING_ERROR; |
2326 ngx_log_error(NGX_LOG_INFO, c->log, 0, | 2329 ngx_log_error(NGX_LOG_INFO, c->log, 0, |
2327 "quic invalid range %ui in ack frame", i); | 2330 "quic invalid range %ui in ack frame", i); |
2328 return NGX_ERROR; | 2331 return NGX_ERROR; |
2329 } | 2332 } |
2330 | 2333 |