@@ -227,6 +227,7 @@ data PartialNodeConfiguration
227227 , pncConfigFile :: ! (Last ConfigYamlFilePath )
228228 , pncTopologyFile :: ! (Last TopologyFile )
229229 , pncDatabaseFile :: ! (Last NodeDatabasePaths )
230+ -- | pncProtocolFiles can only be supplied with command line arguments.
230231 , pncProtocolFiles :: ! (Last ProtocolFilepaths )
231232 , pncValidateDB :: ! (Last Bool )
232233 , pncShutdownConfig :: ! (Last ShutdownConfig )
@@ -652,7 +653,7 @@ defaultPartialNodeConfiguration =
652653 , pncDiffusionMode = Last $ Just InitiatorAndResponderDiffusionMode
653654 , pncExperimentalProtocolsEnabled = Last $ Just False
654655 , pncTopologyFile = Last . Just $ TopologyFile " configuration/cardano/mainnet-topology.json"
655- , pncProtocolFiles = mempty
656+ , pncProtocolFiles = Last . Just $ ProtocolFilepaths Nothing Nothing Nothing Nothing Nothing Nothing
656657 , pncValidateDB = Last $ Just False
657658 , pncShutdownConfig = Last . Just $ ShutdownConfig Nothing Nothing
658659 , pncStartAsNonProducingNode = Last $ Just False
@@ -704,8 +705,8 @@ defaultPartialNodeConfiguration =
704705 , pncConsensusMode = Last (Just Ouroboros. defaultConsensusMode)
705706 -- https://ouroboros-network.cardano.intersectmbo.org/ouroboros-network/Ouroboros-Network-Diffusion-Configuration.html#v:defaultConsensusMode
706707 , pncEnableP2P = Last (Just EnabledP2PMode )
707- , pncPeerSharing = Last ( Just Ouroboros. defaultPeerSharing)
708- -- https://ouroboros-network.cardano.intersectmbo.org/ouroboros-network/Ouroboros-Network-Diffusion-Configuration.html#v:defaultPeerSharing
708+ , pncPeerSharing = mempty
709+ -- the default is defined in `makeNodeConfiguration`
709710 , pncGenesisConfigFlags = Last (Just defaultGenesisConfigFlags)
710711 -- https://ouroboros-consensus.cardano.intersectmbo.org/haddocks/ouroboros-consensus-diffusion/Ouroboros-Consensus-Node-Genesis.html#v:defaultGenesisConfigFlags
711712 , pncResponderCoreAffinityPolicy = Last $ Just NoResponderCoreAffinity
@@ -722,6 +723,7 @@ makeNodeConfiguration pnc = do
722723 validateDB <- lastToEither " Missing ValidateDB" $ pncValidateDB pnc
723724 startAsNonProducingNode <- lastToEither " Missing StartAsNonProducingNode" $ pncStartAsNonProducingNode pnc
724725 protocolConfig <- lastToEither " Missing ProtocolConfig" $ pncProtocolConfig pnc
726+ protocolFiles <- lastToEither " Missing ProtocolFiles" $ pncProtocolFiles pnc
725727 loggingSwitch <- lastToEither " Missing LoggingSwitch" $ pncLoggingSwitch pnc
726728 logMetrics <- lastToEither " Missing LogMetrics" $ pncLogMetrics pnc
727729 traceConfig <- first Text. unpack $ partialTraceSelectionToEither $ pncTraceConfig pnc
@@ -801,9 +803,14 @@ makeNodeConfiguration pnc = do
801803 $ getLast
802804 $ pncChainSyncIdleTimeout pnc
803805
804- ncPeerSharing <-
805- lastToEither " Missing PeerSharing"
806- $ pncPeerSharing pnc
806+ let ncPeerSharing =
807+ case pncPeerSharing pnc of
808+ Last Nothing ->
809+ if not startAsNonProducingNode
810+ || hasProtocolFile protocolFiles
811+ then PeerSharingDisabled
812+ else PeerSharingEnabled
813+ Last (Just peerSharing) -> peerSharing
807814
808815 mGenesisConfigFlags <- case ncConsensusMode of
809816 PraosMode -> pure Nothing
@@ -848,13 +855,7 @@ makeNodeConfiguration pnc = do
848855 { ncConfigFile = configFile
849856 , ncTopologyFile = topologyFile
850857 , ncDatabaseFile = databaseFile
851- , ncProtocolFiles =
852- -- TODO: ncProtocolFiles should be Maybe ProtocolFiles
853- -- as relay nodes don't need the protocol files because
854- -- they are not minting blocks.
855- case getLast $ pncProtocolFiles pnc of
856- Just pFiles -> pFiles
857- Nothing -> ProtocolFilepaths Nothing Nothing Nothing Nothing Nothing Nothing
858+ , ncProtocolFiles = protocolFiles
858859 , ncValidateDB = validateDB
859860 , ncShutdownConfig = shutdownConfig
860861 , ncStartAsNonProducingNode = startAsNonProducingNode
0 commit comments