QUIC: handle callback errors in compat.

The error may be triggered in add_handhshake_data() by incorrect transport
parameter sent by client.  The expected behaviour in this case is to close
connection complaining about incorrect parameter.  Currently the connection
just times out.
pull/92/head
Vladimir Khomutov 2 years ago
parent 027b681688
commit c37fdcdd1e
  1. 14
      src/event/quic/ngx_event_quic_openssl_compat.c

@ -408,7 +408,9 @@ ngx_quic_compat_message_callback(int write_p, int version, int content_type,
"quic compat tx %s len:%uz ", "quic compat tx %s len:%uz ",
ngx_quic_level_name(level), len); ngx_quic_level_name(level), len);
(void) com->method->add_handshake_data(ssl, level, buf, len); if (com->method->add_handshake_data(ssl, level, buf, len) != 1) {
goto failed;
}
break; break;
@ -420,11 +422,19 @@ ngx_quic_compat_message_callback(int write_p, int version, int content_type,
"quic compat %s alert:%ui len:%uz ", "quic compat %s alert:%ui len:%uz ",
ngx_quic_level_name(level), alert, len); ngx_quic_level_name(level), alert, len);
(void) com->method->send_alert(ssl, level, alert); if (com->method->send_alert(ssl, level, alert) != 1) {
goto failed;
}
} }
break; break;
} }
return;
failed:
ngx_post_event(&qc->close, &ngx_posted_events);
} }

Loading…
Cancel
Save