nghttpx: Deal with error from ngtcp2_conn_read_pkt
This commit is contained in:
parent
4b79a4a10d
commit
8903bd1e8a
|
@ -1596,15 +1596,30 @@ int Http3Upstream::on_read(const UpstreamAddr *faddr,
|
||||||
|
|
||||||
rv = ngtcp2_conn_read_pkt(conn_, &path, &pi, data, datalen, quic_timestamp());
|
rv = ngtcp2_conn_read_pkt(conn_, &path, &pi, data, datalen, quic_timestamp());
|
||||||
if (rv != 0) {
|
if (rv != 0) {
|
||||||
ULOG(ERROR, this) << "ngtcp2_conn_read_pkt: " << ngtcp2_strerror(rv);
|
|
||||||
|
|
||||||
switch (rv) {
|
switch (rv) {
|
||||||
case NGTCP2_ERR_DRAINING:
|
case NGTCP2_ERR_DRAINING:
|
||||||
// TODO Start drain period
|
|
||||||
return -1;
|
return -1;
|
||||||
case NGTCP2_ERR_RETRY:
|
case NGTCP2_ERR_RETRY: {
|
||||||
// TODO Send Retry packet
|
auto worker = handler_->get_worker();
|
||||||
|
auto quic_conn_handler = worker->get_quic_connection_handler();
|
||||||
|
|
||||||
|
uint32_t version;
|
||||||
|
const uint8_t *dcid, *scid;
|
||||||
|
size_t dcidlen, scidlen;
|
||||||
|
|
||||||
|
rv = ngtcp2_pkt_decode_version_cid(&version, &dcid, &dcidlen, &scid,
|
||||||
|
&scidlen, data, datalen,
|
||||||
|
SHRPX_QUIC_SCIDLEN);
|
||||||
|
if (rv != 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
quic_conn_handler->send_retry(handler_->get_upstream_addr(), version,
|
||||||
|
dcid, dcidlen, scid, scidlen, remote_addr,
|
||||||
|
local_addr);
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
case NGTCP2_ERR_REQUIRED_TRANSPORT_PARAM:
|
case NGTCP2_ERR_REQUIRED_TRANSPORT_PARAM:
|
||||||
case NGTCP2_ERR_MALFORMED_TRANSPORT_PARAM:
|
case NGTCP2_ERR_MALFORMED_TRANSPORT_PARAM:
|
||||||
case NGTCP2_ERR_TRANSPORT_PARAM:
|
case NGTCP2_ERR_TRANSPORT_PARAM:
|
||||||
|
@ -1621,7 +1636,8 @@ int Http3Upstream::on_read(const UpstreamAddr *faddr,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO Send connection close
|
ULOG(ERROR, this) << "ngtcp2_conn_read_pkt: " << ngtcp2_strerror(rv);
|
||||||
|
|
||||||
return handle_error();
|
return handle_error();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue