mirror of
https://github.com/signalapp/libsignal.git
synced 2026-04-25 17:25:18 +02:00
node: Support H2 connections to a local server
This commit is contained in:
@@ -8,3 +8,5 @@ v0.91.0
|
||||
- Log more details on gRPC failure
|
||||
|
||||
- Log backtraces on panic
|
||||
|
||||
- Node: Support H2 when using `localTestServer` mode for Net connections.
|
||||
|
||||
@@ -687,7 +687,7 @@ type NativeFunctions = {
|
||||
TESTING_CdsiLookupResponseConvert: (asyncRuntime: Wrapper<TokioAsyncContext>) => CancellablePromise<LookupResponse>;
|
||||
TESTING_CdsiLookupErrorConvert: (errorDescription: string) => void;
|
||||
TESTING_ServerMessageAck_Create: () => ServerMessageAck;
|
||||
TESTING_ConnectionManager_newLocalOverride: (userAgent: string, chatPort: number, cdsiPort: number, svr2Port: number, svrBPort: number, rootCertificateDer: Uint8Array<ArrayBuffer>) => ConnectionManager;
|
||||
TESTING_ConnectionManager_newLocalOverride: (userAgent: string, chatPort: number, cdsiPort: number, svr2Port: number, svrBPort: number, rootCertificateDer: Uint8Array<ArrayBuffer>, httpVersion: number) => ConnectionManager;
|
||||
TESTING_ConnectionManager_isUsingProxy: (manager: Wrapper<ConnectionManager>) => number;
|
||||
TESTING_CreateOTP: (username: string, secret: Uint8Array<ArrayBuffer>) => string;
|
||||
TESTING_CreateOTPFromBase64: (username: string, secret: string) => string;
|
||||
|
||||
@@ -111,6 +111,7 @@ export type NetConstructorOptions = Readonly<
|
||||
TESTING_localServer_svr2Port: number;
|
||||
TESTING_localServer_svrBPort: number;
|
||||
TESTING_localServer_rootCertificateDer: Uint8Array<ArrayBuffer>;
|
||||
TESTING_localServer_httpVersion?: 1 | 2;
|
||||
}
|
||||
>;
|
||||
|
||||
@@ -164,7 +165,8 @@ export class Net {
|
||||
options.TESTING_localServer_cdsiPort,
|
||||
options.TESTING_localServer_svr2Port,
|
||||
options.TESTING_localServer_svrBPort,
|
||||
options.TESTING_localServer_rootCertificateDer
|
||||
options.TESTING_localServer_rootCertificateDer,
|
||||
options.TESTING_localServer_httpVersion ?? 1
|
||||
)
|
||||
);
|
||||
} else {
|
||||
|
||||
@@ -12,6 +12,7 @@ use libsignal_bridge_types::net::{BuildVariant, ConnectionManager, TokioAsyncCon
|
||||
use libsignal_core::E164;
|
||||
use libsignal_net::cdsi::{CdsiProtocolError, LookupError, LookupResponse, LookupResponseEntry};
|
||||
use libsignal_net::infra::errors::RetryLater;
|
||||
use libsignal_net::infra::route::HttpVersion;
|
||||
use libsignal_net::infra::ws::attested::AttestedProtocolError;
|
||||
use libsignal_protocol::{Aci, Pni};
|
||||
use nonzero_ext::nonzero;
|
||||
@@ -150,6 +151,7 @@ fn TESTING_ConnectionManager_newLocalOverride(
|
||||
svr2Port: AsType<NonZeroU16, u16>,
|
||||
svrBPort: AsType<NonZeroU16, u16>,
|
||||
rootCertificateDer: &[u8],
|
||||
http_version: u8,
|
||||
) -> ConnectionManager {
|
||||
let ports = net_env::LocalhostEnvPortConfig {
|
||||
chat_port: chatPort.into_inner(),
|
||||
@@ -157,8 +159,13 @@ fn TESTING_ConnectionManager_newLocalOverride(
|
||||
svr2_port: svr2Port.into_inner(),
|
||||
svrb_port: svrBPort.into_inner(),
|
||||
};
|
||||
let http_version = match http_version {
|
||||
1 => HttpVersion::Http1_1,
|
||||
2 => HttpVersion::Http2,
|
||||
_ => panic!("invalid HTTP version {http_version}"),
|
||||
};
|
||||
|
||||
let env = net_env::localhost_test_env_with_ports(ports, rootCertificateDer);
|
||||
let env = net_env::localhost_test_env_with_ports(ports, rootCertificateDer, http_version);
|
||||
ConnectionManager::new_from_static_environment(
|
||||
env,
|
||||
userAgent.as_str(),
|
||||
|
||||
@@ -21,6 +21,7 @@ fn localhost_test_domain_config_with_port_and_cert(
|
||||
service: ServiceName,
|
||||
port: NonZeroU16,
|
||||
root_certificate_der: &[u8],
|
||||
http_version: HttpVersion,
|
||||
) -> DomainConfig {
|
||||
const LOCALHOST_IP_V4: Ipv4Addr = ip_addr!(v4, "127.0.0.1");
|
||||
DomainConfig {
|
||||
@@ -31,7 +32,7 @@ fn localhost_test_domain_config_with_port_and_cert(
|
||||
hostname: "localhost",
|
||||
port,
|
||||
cert: RootCertificates::FromDer(std::borrow::Cow::Owned(root_certificate_der.to_vec())),
|
||||
http_version: Some(HttpVersion::Http1_1),
|
||||
http_version: Some(http_version),
|
||||
min_tls_version: None,
|
||||
confirmation_header_name: None,
|
||||
proxy: None,
|
||||
@@ -80,17 +81,20 @@ const DUMMY_KEYTRANS_CONFIG: KeyTransConfig = KeyTransConfig {
|
||||
pub(crate) fn localhost_test_env_with_ports(
|
||||
ports: LocalhostEnvPortConfig,
|
||||
root_certificate_der: &[u8],
|
||||
http_version: HttpVersion,
|
||||
) -> Env<'static> {
|
||||
Env {
|
||||
chat_domain_config: localhost_test_domain_config_with_port_and_cert(
|
||||
ServiceName("chat"),
|
||||
ports.chat_port,
|
||||
root_certificate_der,
|
||||
http_version,
|
||||
),
|
||||
experimental_chat_h2_domain_config: localhost_test_domain_config_with_port_and_cert(
|
||||
ServiceName("chat"),
|
||||
ports.chat_port,
|
||||
root_certificate_der,
|
||||
http_version,
|
||||
),
|
||||
chat_ws_config: RECOMMENDED_CHAT_WS_CONFIG,
|
||||
cdsi: EnclaveEndpoint {
|
||||
@@ -98,6 +102,7 @@ pub(crate) fn localhost_test_env_with_ports(
|
||||
ServiceName("cdsi"),
|
||||
ports.cdsi_port,
|
||||
root_certificate_der,
|
||||
http_version,
|
||||
),
|
||||
ws_config: RECOMMENDED_WS_CONFIG,
|
||||
params: DUMMY_CDSI_ENDPOINT_PARAMS,
|
||||
@@ -107,6 +112,7 @@ pub(crate) fn localhost_test_env_with_ports(
|
||||
ServiceName("svr2"),
|
||||
ports.svr2_port,
|
||||
root_certificate_der,
|
||||
http_version,
|
||||
),
|
||||
ws_config: RECOMMENDED_WS_CONFIG,
|
||||
params: DUMMY_SVR2_ENDPOINT_PARAMS,
|
||||
@@ -118,6 +124,7 @@ pub(crate) fn localhost_test_env_with_ports(
|
||||
ServiceName("svrb"),
|
||||
ports.svrb_port,
|
||||
root_certificate_der,
|
||||
http_version,
|
||||
),
|
||||
ws_config: RECOMMENDED_WS_CONFIG,
|
||||
params: DUMMY_SVRB_ENDPOINT_PARAMS,
|
||||
|
||||
Reference in New Issue
Block a user