Skip to content

Commit b0f60e7

Browse files
committed
fix: fixes related to PR feedback
1 parent b7afb67 commit b0f60e7

File tree

17 files changed

+70
-55
lines changed

17 files changed

+70
-55
lines changed

packages/libp2p/src/address-manager/utils.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { type ObjectSchema, object, array, string, mixed } from 'yup'
22
import { validateMultiaddr } from '../config/helpers.js'
3-
import type { AddressManagerInit } from '.'
43
import type { Multiaddr } from '@multiformats/multiaddr'
54

65
export function debounce (func: () => void, wait: number): () => void {
@@ -17,7 +16,7 @@ export function debounce (func: () => void, wait: number): () => void {
1716
}
1817
}
1918

20-
export function validateAddressManagerConfig (opts: AddressManagerInit): ObjectSchema<Record<string, unknown>> {
19+
export function validateAddressManagerConfig (): ObjectSchema<Record<string, unknown>> {
2120
return object({
2221
listen: array().of(string()).test('is multiaddr', validateMultiaddr).default([]),
2322
announce: array().of(string()).test('is multiaddr', validateMultiaddr).default([]),

packages/libp2p/src/config/config.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,11 @@ import mergeOptions from 'merge-options'
55
import { object } from 'yup'
66
import { validateAddressManagerConfig } from '../address-manager/utils.js'
77
import { validateConnectionManagerConfig } from '../connection-manager/utils.js'
8-
import type { AddressManagerInit } from '../address-manager'
98
import type { ConnectionManagerInit } from '../connection-manager/index.js'
109
import type { Libp2pInit } from '../index.js'
1110
import type { ServiceMap, RecursivePartial } from '@libp2p/interface'
1211

13-
const DefaultConfig: Partial<Libp2pInit> = {
12+
const defaultConfig: Partial<Libp2pInit> = {
1413
connectionManager: {
1514
resolvers: {
1615
dnsaddr: dnsaddrResolver
@@ -24,13 +23,13 @@ const DefaultConfig: Partial<Libp2pInit> = {
2423

2524
export function validateConfig<T extends ServiceMap = Record<string, unknown>> (opts: RecursivePartial<Libp2pInit<T>>): Libp2pInit<T> {
2625
const libp2pConfig = object({
27-
addresses: validateAddressManagerConfig(opts?.addresses as AddressManagerInit),
26+
addresses: validateAddressManagerConfig(),
2827
connectionManager: validateConnectionManagerConfig(opts?.connectionManager as ConnectionManagerInit)
2928
})
3029

3130
const parsedOpts = libp2pConfig.validateSync(opts)
3231

33-
const resultingOptions: Libp2pInit<T> = mergeOptions(DefaultConfig, parsedOpts)
32+
const resultingOptions: Libp2pInit<T> = mergeOptions(defaultConfig, parsedOpts)
3433

3534
return resultingOptions
3635
}

packages/libp2p/src/config/helpers.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,17 @@ import { multiaddr } from '@multiformats/multiaddr'
33
import { codes } from '../errors.js'
44

55
export const validateMultiaddr = (value: Array<string | undefined> | undefined): boolean => {
6+
if (value == null || value === undefined) {
7+
return false
8+
}
9+
610
value?.forEach((addr) => {
711
try {
812
multiaddr(addr)
913
} catch (err) {
1014
throw new CodeError(`invalid multiaddr: ${addr}`, codes.ERR_INVALID_MULTIADDR)
1115
}
1216
})
17+
1318
return true
1419
}

packages/libp2p/src/connection-manager/utils.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,11 +78,11 @@ export const validateConnectionManagerConfig = (opts: ConnectionManagerInit): Ob
7878
autoDialConcurrency: number().integer().min(0).default(AUTO_DIAL_CONCURRENCY),
7979
autoDialPriority: number().integer().min(0).default(AUTO_DIAL_PRIORITY),
8080
maxParallelDials: number().integer().min(0).default(MAX_PARALLEL_DIALS),
81-
maxPeerAddrsToDialed: number().min(0).integer().default(MAX_PEER_ADDRS_TO_DIAL),
81+
maxPeerAddrsToDialed: number().integer().min(0).default(MAX_PEER_ADDRS_TO_DIAL),
8282
dialTimeout: number().integer().min(0).default(DIAL_TIMEOUT),
8383
inboundUpgradeTimeout: number().integer().min(0).default(INBOUND_UPGRADE_TIMEOUT),
84-
allow: array().of(string()).test('is multiaddr', validateMultiaddr).optional(),
85-
deny: array().of(string()).test('is multiaddr', validateMultiaddr).optional(),
84+
allow: array().of(string()).test('is multiaddr', validateMultiaddr).default([]),
85+
deny: array().of(string()).test('is multiaddr', validateMultiaddr).default([]),
8686
inboundConnectionThreshold: number().integer().min(0).default(INBOUND_CONNECTION_THRESHOLD),
8787
maxIncomingPendingConnections: number().integer().min(0).default(MAX_INCOMING_PENDING_CONNECTIONS)
8888
})
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// https://github.com/libp2p/specs/blob/master/relay/DCUtR.md#rpc-messages
2+
export const MAX_DCUTR_MESSAGE_SIZE = 1024 * 4
3+
// ensure the dial has a high priority to jump to the head of the dial queue
4+
export const DCUTR_DIAL_PRIORITY = 100
5+
6+
export const DEFAULT_MAX_INBOUND_STREAMS = 1
7+
8+
export const DEFAULT_MAX_OUTBOUND_STREAMS = 1
9+
10+
export const DEFAULT_TIMEOUT = 5000
11+
12+
export const DEFAULT_RETRIES = 3

packages/protocol-dcutr/src/dcutr.ts

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,21 @@ import { type Multiaddr, multiaddr } from '@multiformats/multiaddr'
33
import delay from 'delay'
44
import { pbStream } from 'it-protobuf-stream'
55
import { number, object } from 'yup'
6+
import { DCUTR_DIAL_PRIORITY, DEFAULT_MAX_INBOUND_STREAMS, DEFAULT_MAX_OUTBOUND_STREAMS, DEFAULT_RETRIES, DEFAULT_TIMEOUT, MAX_DCUTR_MESSAGE_SIZE } from './constants.js'
67
import { HolePunch } from './pb/message.js'
78
import { isPublicAndDialable } from './utils.js'
89
import { multicodec } from './index.js'
910
import type { DCUtRServiceComponents, DCUtRServiceInit } from './index.js'
1011
import type { Logger, Connection, Stream, PeerStore, Startable } from '@libp2p/interface'
1112
import type { AddressManager, ConnectionManager, Registrar, TransportManager } from '@libp2p/interface-internal'
1213

13-
// https://github.com/libp2p/specs/blob/master/relay/DCUtR.md#rpc-messages
14-
const MAX_DCUTR_MESSAGE_SIZE = 1024 * 4
15-
// ensure the dial has a high priority to jump to the head of the dial queue
16-
const DCUTR_DIAL_PRIORITY = 100
17-
1814
const configValidator = object({
1915
// https://github.com/libp2p/go-libp2p/blob/8d2e54e1637041d5cf4fac1e531287560bd1f4ac/p2p/protocol/holepunch/holepuncher.go#L27
20-
timeout: number().integer().default(5000).min(0),
16+
timeout: number().integer().min(0).default(DEFAULT_TIMEOUT),
2117
// https://github.com/libp2p/go-libp2p/blob/8d2e54e1637041d5cf4fac1e531287560bd1f4ac/p2p/protocol/holepunch/holepuncher.go#L28
22-
retries: number().integer().default(3).min(0),
23-
maxInboundStreams: number().integer().default(1).min(0),
24-
maxOutboundStreams: number().integer().default(1).min(0)
18+
retries: number().integer().min(0).default(DEFAULT_RETRIES),
19+
maxInboundStreams: number().integer().min(0).default(DEFAULT_MAX_INBOUND_STREAMS),
20+
maxOutboundStreams: number().integer().min(0).default(DEFAULT_MAX_OUTBOUND_STREAMS)
2521
})
2622

2723
export class DefaultDCUtRService implements Startable {

packages/protocol-fetch/src/constants.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ export const PROTOCOL_NAME = 'fetch'
55
export const MAX_INBOUND_STREAMS = 1
66
export const MAX_OUTBOUND_STREAMS = 1
77
export const TIMEOUT = 10000
8+
export const PROTOCOL_PREFIX = 'libp2p'

packages/protocol-fetch/src/fetch.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import { CodeError, ERR_INVALID_MESSAGE, ERR_INVALID_PARAMETERS, ERR_TIMEOUT, se
22
import { pbStream } from 'it-protobuf-stream'
33
import { fromString as uint8arrayFromString } from 'uint8arrays/from-string'
44
import { toString as uint8arrayToString } from 'uint8arrays/to-string'
5-
import { object, number } from 'yup'
6-
import { MAX_INBOUND_STREAMS, MAX_OUTBOUND_STREAMS, PROTOCOL_NAME, PROTOCOL_VERSION, TIMEOUT } from './constants.js'
5+
import { object, number, string } from 'yup'
6+
import { MAX_INBOUND_STREAMS, MAX_OUTBOUND_STREAMS, PROTOCOL_NAME, PROTOCOL_PREFIX, PROTOCOL_VERSION, TIMEOUT } from './constants.js'
77
import { FetchRequest, FetchResponse } from './pb/proto.js'
88
import type { Fetch as FetchInterface, FetchComponents, FetchInit, LookupFunction } from './index.js'
99
import type { AbortOptions, Logger, Stream, PeerId, Startable } from '@libp2p/interface'
@@ -19,8 +19,10 @@ import type { IncomingStreamData } from '@libp2p/interface-internal'
1919
const configValidator = object({
2020
timeout: number().integer().default(TIMEOUT),
2121
maxInboundStreams: number().integer().min(0).default(MAX_INBOUND_STREAMS),
22-
maxOutboundStreams: number().integer().min(0).default(MAX_OUTBOUND_STREAMS)
22+
maxOutboundStreams: number().integer().min(0).default(MAX_OUTBOUND_STREAMS),
23+
protocolPrefix: string().default(PROTOCOL_PREFIX)
2324
})
25+
2426
export class Fetch implements Startable, FetchInterface {
2527
public readonly protocol: string
2628
private readonly components: FetchComponents
@@ -40,7 +42,7 @@ export class Fetch implements Startable, FetchInterface {
4042

4143
const config = configValidator.validateSync(init)
4244

43-
this.protocol = `/${init.protocolPrefix ?? 'libp2p'}/${PROTOCOL_NAME}/${PROTOCOL_VERSION}`
45+
this.protocol = `/${config.protocolPrefix}/${PROTOCOL_NAME}/${PROTOCOL_VERSION}`
4446
this.timeout = config.timeout
4547
this.maxInboundStreams = config.maxInboundStreams
4648
this.maxOutboundStreams = config.maxOutboundStreams

packages/protocol-identify/src/identify.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ import {
2020
MAX_OUTBOUND_STREAMS,
2121
MAX_IDENTIFY_MESSAGE_SIZE,
2222
TIMEOUT,
23-
RUN_ON_CONNECTION_OPEN,
23+
RUN_ON_CONNECTION_OPEN as DEFAULT_RUN_ON_CONNECTION_OPEN,
2424
PROTOCOL_PREFIX,
25-
RUN_ON_TRANSIENT_CONNECTION,
25+
RUN_ON_TRANSIENT_CONNECTION as DEFAULT_RUN_ON_TRANSIENT_CONNECTIONS,
2626
MAX_PUSH_INCOMING_STREAMS,
2727
MAX_PUSH_OUTGOING_STREAMS,
2828
MAX_OBSERVED_ADDRESSES
@@ -41,8 +41,8 @@ const configValidator = object({
4141
maxPushOutgoingStreams: number().integer().min(0).default(MAX_PUSH_OUTGOING_STREAMS),
4242
maxOutboundStreams: number().integer().min(0).default(MAX_OUTBOUND_STREAMS),
4343
maxObservedAddresses: number().integer().min(0).default(MAX_OBSERVED_ADDRESSES),
44-
runOnConnectionOpen: boolean().default(RUN_ON_CONNECTION_OPEN),
45-
runOnTransientConnection: boolean().default(RUN_ON_TRANSIENT_CONNECTION)
44+
runOnConnectionOpen: boolean().default(DEFAULT_RUN_ON_CONNECTION_OPEN),
45+
runOnTransientConnection: boolean().default(DEFAULT_RUN_ON_TRANSIENT_CONNECTIONS)
4646
})
4747

4848
export class Identify implements Startable, IdentifyInterface {

packages/protocol-ping/src/constants.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,6 @@ export const TIMEOUT = 10000
1313
// opening stream A even though the dialing peer is opening stream B and closing stream A).
1414
export const MAX_INBOUND_STREAMS = 2
1515
export const MAX_OUTBOUND_STREAMS = 1
16+
export const DEFAULT_RUN_ON_TRANSIENT_CONNECTIONS = true
1617

1718
export const ERR_WRONG_PING_ACK = 'ERR_WRONG_PING_ACK'

0 commit comments

Comments
 (0)