• Home
  • Raw
  • Download

Lines Matching refs:qs

92                                    struct quicsocket *qs);
94 struct quicsocket *qs);
156 struct quicsocket *qs = (struct quicsocket *)user_data; in qlog_callback() local
158 if(qs->qlogfd != -1) { in qlog_callback()
159 ssize_t rc = write(qs->qlogfd, data, datalen); in qlog_callback()
162 close(qs->qlogfd); in qlog_callback()
163 qs->qlogfd = -1; in qlog_callback()
169 static void quic_settings(struct quicsocket *qs, in quic_settings() argument
172 ngtcp2_settings *s = &qs->settings; in quic_settings()
187 if(qs->qlogfd != -1) { in quic_settings()
215 static int init_ngh3_conn(struct quicsocket *qs);
217 static int write_client_handshake(struct quicsocket *qs, in write_client_handshake() argument
224 crypto_data = &qs->crypto_data[level]; in write_client_handshake()
240 qs->qconn, level, (uint8_t *)(&crypto_data->buf[crypto_data->len] - len), in write_client_handshake()
257 struct quicsocket *qs = (struct quicsocket *)SSL_get_app_data(ssl); in quic_set_encryption_secrets() local
261 qs->qconn, NULL, NULL, NULL, level, rx_secret, secretlen) != 0) in quic_set_encryption_secrets()
265 qs->qconn, NULL, NULL, NULL, level, tx_secret, secretlen) != 0) in quic_set_encryption_secrets()
269 if(init_ngh3_conn(qs) != CURLE_OK) in quic_set_encryption_secrets()
279 struct quicsocket *qs = (struct quicsocket *)SSL_get_app_data(ssl); in quic_add_handshake_data() local
282 return write_client_handshake(qs, level, data, len); in quic_add_handshake_data()
294 struct quicsocket *qs = (struct quicsocket *)SSL_get_app_data(ssl); in quic_send_alert() local
297 qs->tls_alert = alert; in quic_send_alert()
339 static int quic_init_ssl(struct quicsocket *qs) in quic_init_ssl() argument
344 const char * const hostname = qs->conn->host.name; in quic_init_ssl()
346 DEBUGASSERT(!qs->ssl); in quic_init_ssl()
347 qs->ssl = SSL_new(qs->sslctx); in quic_init_ssl()
349 SSL_set_app_data(qs->ssl, qs); in quic_init_ssl()
350 SSL_set_connect_state(qs->ssl); in quic_init_ssl()
352 switch(qs->version) { in quic_init_ssl()
361 SSL_set_alpn_protos(qs->ssl, alpn, (int)alpnlen); in quic_init_ssl()
364 SSL_set_tlsext_host_name(qs->ssl, hostname); in quic_init_ssl()
373 struct quicsocket *qs = gnutls_session_get_ptr(ssl); in secret_func() local
378 qs->qconn, NULL, NULL, NULL, level, rx_secret, secretlen) != 0) in secret_func()
382 qs->qconn, NULL, NULL, NULL, level, tx_secret, secretlen) != 0) in secret_func()
386 if(init_ngh3_conn(qs) != CURLE_OK) in secret_func()
398 struct quicsocket *qs = gnutls_session_get_ptr(ssl); in read_func() local
405 rv = write_client_handshake(qs, level, data, len); in read_func()
417 struct quicsocket *qs = gnutls_session_get_ptr(ssl); in alert_read_func() local
421 qs->tls_alert = alert_desc; in alert_read_func()
428 struct quicsocket *qs = gnutls_session_get_ptr(ssl); in tp_recv_func() local
436 if(ngtcp2_conn_set_remote_transport_params(qs->qconn, &params) != 0) in tp_recv_func()
444 struct quicsocket *qs = gnutls_session_get_ptr(ssl); in tp_send_func() local
450 ngtcp2_conn_get_local_transport_params(qs->qconn, &params); in tp_send_func()
467 static int quic_init_ssl(struct quicsocket *qs) in quic_init_ssl() argument
471 const char * const hostname = qs->conn->host.name; in quic_init_ssl()
474 DEBUGASSERT(!qs->ssl); in quic_init_ssl()
476 gnutls_init(&qs->ssl, GNUTLS_CLIENT); in quic_init_ssl()
477 gnutls_session_set_ptr(qs->ssl, qs); in quic_init_ssl()
479 rc = gnutls_priority_set_direct(qs->ssl, QUIC_PRIORITY, NULL); in quic_init_ssl()
486 gnutls_handshake_set_secret_function(qs->ssl, secret_func); in quic_init_ssl()
487 gnutls_handshake_set_read_function(qs->ssl, read_func); in quic_init_ssl()
488 gnutls_alert_set_read_function(qs->ssl, alert_read_func); in quic_init_ssl()
490 rc = gnutls_session_ext_register(qs->ssl, "QUIC Transport Parameters", in quic_init_ssl()
506 gnutls_session_set_keylog_function(qs->ssl, keylog_callback); in quic_init_ssl()
509 if(qs->cred) in quic_init_ssl()
510 gnutls_certificate_free_credentials(qs->cred); in quic_init_ssl()
512 rc = gnutls_certificate_allocate_credentials(&qs->cred); in quic_init_ssl()
520 rc = gnutls_certificate_set_x509_system_trust(qs->cred); in quic_init_ssl()
528 rc = gnutls_credentials_set(qs->ssl, GNUTLS_CRD_CERTIFICATE, qs->cred); in quic_init_ssl()
535 switch(qs->version) { in quic_init_ssl()
545 gnutls_alpn_set_protocols(qs->ssl, &alpn, 1, 0); in quic_init_ssl()
548 gnutls_server_name_set(qs->ssl, GNUTLS_NAME_DNS, hostname, strlen(hostname)); in quic_init_ssl()
571 struct quicsocket *qs = (struct quicsocket *)user_data; in cb_handshake_completed() local
573 infof(qs->conn->data, "QUIC handshake is completed\n"); in cb_handshake_completed()
593 struct quicsocket *qs = (struct quicsocket *)user_data; in cb_recv_stream_data() local
600 nghttp3_conn_read_stream(qs->h3conn, stream_id, buf, buflen, fin); in cb_recv_stream_data()
602 failf(qs->conn->data, "nghttp3_conn_read_stream returned error: %s\n", in cb_recv_stream_data()
621 struct quicsocket *qs = (struct quicsocket *)user_data; in cb_acked_stream_data_offset() local
629 rv = nghttp3_conn_add_ack_offset(qs->h3conn, stream_id, datalen); in cb_acked_stream_data_offset()
631 failf(qs->conn->data, "nghttp3_conn_add_ack_offset returned error: %s\n", in cb_acked_stream_data_offset()
643 struct quicsocket *qs = (struct quicsocket *)user_data; in cb_stream_close() local
649 rv = nghttp3_conn_close_stream(qs->h3conn, stream_id, in cb_stream_close()
652 failf(qs->conn->data, "nghttp3_conn_close_stream returned error: %s\n", in cb_stream_close()
664 struct quicsocket *qs = (struct quicsocket *)user_data; in cb_stream_reset() local
671 rv = nghttp3_conn_reset_stream(qs->h3conn, stream_id); in cb_stream_reset()
673 failf(qs->conn->data, "nghttp3_conn_reset_stream returned error: %s\n", in cb_stream_reset()
696 struct quicsocket *qs = (struct quicsocket *)user_data; in cb_extend_max_stream_data() local
702 rv = nghttp3_conn_unblock_stream(qs->h3conn, stream_id); in cb_extend_max_stream_data()
704 failf(qs->conn->data, "nghttp3_conn_unblock_stream returned error: %s\n", in cb_extend_max_stream_data()
716 struct quicsocket *qs = (struct quicsocket *)user_data; in cb_get_new_connection_id() local
720 result = Curl_rand(qs->conn->data, cid->data, cidlen); in cb_get_new_connection_id()
725 result = Curl_rand(qs->conn->data, token, NGTCP2_STATELESS_RESET_TOKENLEN); in cb_get_new_connection_id()
781 struct quicsocket *qs = &conn->hequic[sockindex]; in Curl_quic_connect() local
786 if(qs->conn) in Curl_quic_connect()
788 qs->conn = conn; in Curl_quic_connect()
801 qs->version = NGTCP2_PROTO_VER_MAX; in Curl_quic_connect()
803 qs->sslctx = quic_ssl_ctx(data); in Curl_quic_connect()
804 if(!qs->sslctx) in Curl_quic_connect()
808 if(quic_init_ssl(qs)) in Curl_quic_connect()
811 qs->dcid.datalen = NGTCP2_MAX_CIDLEN; in Curl_quic_connect()
812 result = Curl_rand(data, qs->dcid.data, NGTCP2_MAX_CIDLEN); in Curl_quic_connect()
816 qs->scid.datalen = NGTCP2_MAX_CIDLEN; in Curl_quic_connect()
817 result = Curl_rand(data, qs->scid.data, NGTCP2_MAX_CIDLEN); in Curl_quic_connect()
821 (void)Curl_qlogdir(data, qs->scid.data, NGTCP2_MAX_CIDLEN, &qfd); in Curl_quic_connect()
822 qs->qlogfd = qfd; /* -1 if failure above */ in Curl_quic_connect()
823 quic_settings(qs, data->set.buffer_size); in Curl_quic_connect()
825 qs->local_addrlen = sizeof(qs->local_addr); in Curl_quic_connect()
826 rv = getsockname(sockfd, (struct sockaddr *)&qs->local_addr, in Curl_quic_connect()
827 &qs->local_addrlen); in Curl_quic_connect()
831 ngtcp2_addr_init(&path.local, &qs->local_addr, qs->local_addrlen, NULL); in Curl_quic_connect()
834 rc = ngtcp2_conn_client_new(&qs->qconn, &qs->dcid, &qs->scid, &path, in Curl_quic_connect()
836 &qs->settings, NULL, qs); in Curl_quic_connect()
840 ngtcp2_conn_set_tls_native_handle(qs->qconn, qs->ssl); in Curl_quic_connect()
881 static void qs_disconnect(struct quicsocket *qs) in qs_disconnect() argument
884 if(!qs->conn) /* already closed */ in qs_disconnect()
886 qs->conn = NULL; in qs_disconnect()
887 if(qs->qlogfd != -1) { in qs_disconnect()
888 close(qs->qlogfd); in qs_disconnect()
889 qs->qlogfd = -1; in qs_disconnect()
891 if(qs->ssl) in qs_disconnect()
893 SSL_free(qs->ssl); in qs_disconnect()
895 gnutls_deinit(qs->ssl); in qs_disconnect()
897 qs->ssl = NULL; in qs_disconnect()
899 if(qs->cred) in qs_disconnect()
900 gnutls_certificate_free_credentials(qs->cred); in qs_disconnect()
903 Curl_safefree(qs->crypto_data[i].buf); in qs_disconnect()
904 nghttp3_conn_del(qs->h3conn); in qs_disconnect()
905 ngtcp2_conn_del(qs->qconn); in qs_disconnect()
907 SSL_CTX_free(qs->sslctx); in qs_disconnect()
1026 struct quicsocket *qs = user_data; in cb_h3_deferred_consume() local
1031 ngtcp2_conn_extend_max_stream_offset(qs->qconn, stream_id, consumed); in cb_h3_deferred_consume()
1032 ngtcp2_conn_extend_max_offset(qs->qconn, consumed); in cb_h3_deferred_consume()
1168 static int init_ngh3_conn(struct quicsocket *qs) in init_ngh3_conn() argument
1174 if(ngtcp2_conn_get_max_local_streams_uni(qs->qconn) < 3) { in init_ngh3_conn()
1175 failf(qs->conn->data, "too few available QUIC streams"); in init_ngh3_conn()
1179 nghttp3_conn_settings_default(&qs->h3settings); in init_ngh3_conn()
1181 rc = nghttp3_conn_client_new(&qs->h3conn, in init_ngh3_conn()
1183 &qs->h3settings, in init_ngh3_conn()
1185 qs); in init_ngh3_conn()
1191 rc = ngtcp2_conn_open_uni_stream(qs->qconn, &ctrl_stream_id, NULL); in init_ngh3_conn()
1197 rc = nghttp3_conn_bind_control_stream(qs->h3conn, ctrl_stream_id); in init_ngh3_conn()
1203 rc = ngtcp2_conn_open_uni_stream(qs->qconn, &qpack_enc_stream_id, NULL); in init_ngh3_conn()
1209 rc = ngtcp2_conn_open_uni_stream(qs->qconn, &qpack_dec_stream_id, NULL); in init_ngh3_conn()
1215 rc = nghttp3_conn_bind_qpack_streams(qs->h3conn, qpack_enc_stream_id, in init_ngh3_conn()
1256 struct quicsocket *qs = conn->quic; in ngh3_stream_recv() local
1270 if(ng_process_ingress(conn, sockfd, qs)) { in ngh3_stream_recv()
1274 if(ng_flush_egress(conn, sockfd, qs)) { in ngh3_stream_recv()
1289 extend_stream_window(qs->qconn, stream); in ngh3_stream_recv()
1290 if(ng_flush_egress(conn, sockfd, qs)) { in ngh3_stream_recv()
1404 struct quicsocket *qs = conn->quic; in http_request() local
1412 rc = ngtcp2_conn_open_bidi_stream(qs->qconn, &stream3_id, NULL); in http_request()
1599 rc = nghttp3_conn_submit_request(qs->h3conn, stream->stream3_id, in http_request()
1610 rc = nghttp3_conn_submit_request(qs->h3conn, stream->stream3_id, in http_request()
1639 struct quicsocket *qs = conn->quic; in ngh3_stream_send() local
1657 (void)nghttp3_conn_resume_stream(qs->h3conn, stream->stream3_id); in ngh3_stream_send()
1666 if(ng_flush_egress(conn, sockfd, qs)) { in ngh3_stream_send()
1695 struct quicsocket *qs = &conn->hequic[sockindex]; in Curl_quic_is_connected() local
1698 result = ng_process_ingress(conn, sockfd, qs); in Curl_quic_is_connected()
1702 result = ng_flush_egress(conn, sockfd, qs); in Curl_quic_is_connected()
1706 if(ngtcp2_conn_get_handshake_completed(qs->qconn)) { in Curl_quic_is_connected()
1713 (void)qs_disconnect(qs); in Curl_quic_is_connected()
1719 struct quicsocket *qs) in ng_process_ingress() argument
1746 ngtcp2_addr_init(&path.local, &qs->local_addr, in ng_process_ingress()
1747 qs->local_addrlen, NULL); in ng_process_ingress()
1751 rv = ngtcp2_conn_read_pkt(qs->qconn, &path, &pi, buf, recvd, ts); in ng_process_ingress()
1762 struct quicsocket *qs) in ng_flush_egress() argument
1780 switch(qs->local_addr.sa_family) { in ng_flush_egress()
1793 rv = ngtcp2_conn_handle_expiry(qs->qconn, ts); in ng_flush_egress()
1804 if(qs->h3conn && ngtcp2_conn_get_max_data_left(qs->qconn)) { in ng_flush_egress()
1805 veccnt = nghttp3_conn_writev_stream(qs->h3conn, &stream_id, &fin, vec, in ng_flush_egress()
1816 ngtcp2_conn_writev_stream(qs->qconn, &ps.path, NULL, in ng_flush_egress()
1827 rv = nghttp3_conn_block_stream(qs->h3conn, stream_id); in ng_flush_egress()
1838 rv = nghttp3_conn_add_write_offset(qs->h3conn, stream_id, in ng_flush_egress()
1861 outlen = ngtcp2_conn_write_pkt(qs->qconn, &ps.path, NULL, in ng_flush_egress()
1890 expiry = ngtcp2_conn_get_expiry(qs->qconn); in ng_flush_egress()
1912 struct quicsocket *qs = conn->quic; in Curl_quic_done_sending() local
1914 (void)nghttp3_conn_resume_stream(qs->h3conn, stream->stream3_id); in Curl_quic_done_sending()