view src/event/quic/ngx_event_quic_migration.h @ 9059:b87a0dbc1150 quic

HTTP/3: implement keepalive for hq. Previously, keepalive timer was deleted in ngx_http_v3_wait_request_handler() and set in request cleanup handler. This worked for HTTP/3 connections, but not for hq connections. Now keepalive timer is deleted in ngx_http_v3_init_request_stream() and set in connection cleanup handler, which works both for HTTP/3 and hq.
author Roman Arutyunyan <arut@nginx.com>
date Tue, 25 Oct 2022 12:52:09 +0400
parents fab36e4abf83
children bba136612fe4
line wrap: on
line source


/*
 * Copyright (C) Nginx, Inc.
 */


#ifndef _NGX_EVENT_QUIC_MIGRATION_H_INCLUDED_
#define _NGX_EVENT_QUIC_MIGRATION_H_INCLUDED_


#include <ngx_config.h>
#include <ngx_core.h>

#define NGX_QUIC_PATH_RETRIES   3

#define NGX_QUIC_PATH_PROBE     0
#define NGX_QUIC_PATH_ACTIVE    1
#define NGX_QUIC_PATH_BACKUP    2

#define ngx_quic_path_dbg(c, msg, path)                                       \
    ngx_log_debug7(NGX_LOG_DEBUG_EVENT, c->log, 0,                            \
                   "quic path seq:%uL %s sent:%O recvd:%O state:%s%s%s",      \
                   path->seqnum, msg, path->sent, path->received,             \
                   path->limited ? "L" : "", path->validated ? "V": "N",      \
                   path->validating ? "R": "");

ngx_int_t ngx_quic_handle_path_challenge_frame(ngx_connection_t *c,
    ngx_quic_header_t *pkt, ngx_quic_path_challenge_frame_t *f);
ngx_int_t ngx_quic_handle_path_response_frame(ngx_connection_t *c,
    ngx_quic_path_challenge_frame_t *f);

ngx_quic_path_t *ngx_quic_new_path(ngx_connection_t *c,
    struct sockaddr *sockaddr, socklen_t socklen, ngx_quic_client_id_t *cid);
ngx_int_t ngx_quic_free_path(ngx_connection_t *c, ngx_quic_path_t *path);

ngx_int_t ngx_quic_set_path(ngx_connection_t *c, ngx_quic_header_t *pkt);
ngx_int_t ngx_quic_handle_migration(ngx_connection_t *c,
    ngx_quic_header_t *pkt);

void ngx_quic_path_validation_handler(ngx_event_t *ev);

#endif /* _NGX_EVENT_QUIC_MIGRATION_H_INCLUDED_ */