Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions src/core/networking/transport/libp2p/libp2pTransport.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { Libp2pServer } from "./libp2pServer";
import { NetworkTransport } from "../networkTransport";
import { AddressAbstraction } from "../../../peering/addressing";
import { logger } from "../../../logger";
import sodium from 'libsodium-wrappers-sumo';

import { noise } from "@chainsafe/libp2p-noise";
import { yamux } from "@chainsafe/libp2p-yamux";
Expand Down Expand Up @@ -84,6 +85,14 @@ export class Libp2pTransport extends NetworkTransport {
}

async start(): Promise<void> {
// Ensure libsodium is initialized before starting libp2p to prevent
// race conditions in crypto handshakes
try {
await sodium.ready;
} catch (error) {
logger.warn(`libp2pTransport: Failed to initialize libsodium: ${error}, continuing anyway`);
}

// Pre-create libp2p components:
let transports = [];
// Single WebSockets transport; enable HTTPS if any /wss listener is configured
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import WebSocket from 'isomorphic-ws';
import { Buffer } from 'buffer';

export class WebSocketConnection extends TransportConnection {
private static WEBSOCKET_HANDSHAKE_TIMEOUT = 2500;
private static WEBSOCKET_HANDSHAKE_TIMEOUT = 10000;
private _ws: WebSocket; // The WebSocket connection associated with this peer
get ws(): WebSocket { return this._ws }

Expand Down