From a663c6f8f595dee8fff054a057f25d9f2e1a25a7 Mon Sep 17 00:00:00 2001 From: Chris Gianelloni Date: Thu, 12 Dec 2024 17:01:38 -0500 Subject: [PATCH] feat: unix socket for ouroboros node-to-client Signed-off-by: Chris Gianelloni --- internal/config/config.go | 2 ++ internal/node/node.go | 36 +++++++++++++++++++++++++++--------- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/internal/config/config.go b/internal/config/config.go index 3cec225b..6e973fce 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -27,6 +27,7 @@ type Config struct { BindAddr string `split_words:"true"` CardanoConfig string ` envconfig:"config"` DatabasePath string `split_words:"true"` + SocketPath string `split_words:"true"` IntersectTip bool `split_words:"true"` Network string MetricsPort uint `split_words:"true"` @@ -38,6 +39,7 @@ var globalConfig = &Config{ BindAddr: "0.0.0.0", CardanoConfig: "./configs/cardano/preview/config.json", DatabasePath: ".dingo", + SocketPath: "dingo.socket", IntersectTip: false, Network: "preview", MetricsPort: 12798, diff --git a/internal/node/node.go b/internal/node/node.go index c81dcc9b..4a631310 100644 --- a/internal/node/node.go +++ b/internal/node/node.go @@ -40,10 +40,31 @@ func Run(logger *slog.Logger) error { fmt.Sprintf("topology: %+v", config.GetTopologyConfig()), "component", "node", ) - l, err := net.Listen("tcp", fmt.Sprintf("%s:%d", cfg.BindAddr, cfg.Port)) + tcpNtN, err := net.Listen( + "tcp", + fmt.Sprintf("%s:%d", cfg.BindAddr, cfg.Port), + ) if err != nil { return err } + logger.Info( + fmt.Sprintf( + "listening for ouroboros node-to-node connections on %s", + fmt.Sprintf("%s:%d", cfg.BindAddr, cfg.Port), + ), + "component", "node", + ) + socketNtC, err := net.Listen("unix", cfg.SocketPath) + if err != nil { + return err + } + logger.Info( + fmt.Sprintf( + "listening for ouroboros node-to-client connections on socket %s", + cfg.SocketPath, + ), + "component", "node", + ) var nodeCfg *cardano.CardanoNodeConfig if cfg.CardanoConfig != "" { tmpCfg, err := cardano.NewCardanoNodeConfigFromFile(cfg.CardanoConfig) @@ -59,13 +80,6 @@ func Run(logger *slog.Logger) error { "component", "node", ) } - logger.Info( - fmt.Sprintf( - "listening for ouroboros node-to-node connections on %s", - fmt.Sprintf("%s:%d", cfg.BindAddr, cfg.Port), - ), - "component", "node", - ) d, err := dingo.New( dingo.NewConfig( dingo.WithIntersectTip(cfg.IntersectTip), @@ -75,7 +89,11 @@ func Run(logger *slog.Logger) error { dingo.WithCardanoNodeConfig(nodeCfg), dingo.WithListeners( dingo.ListenerConfig{ - Listener: l, + Listener: tcpNtN, + }, + dingo.ListenerConfig{ + Listener: socketNtC, + UseNtC: true, }, ), // Enable metrics with default prometheus registry