Skip to content

Commit a176bda

Browse files
committed
Added configuration possibility to specify both, an external (public) and an internal (listen) IP address for each pluto node. This should allow for cloud deployments where Elastic IPs are not available to locally bind to but to communicate with other nodes.
1 parent ce17eb7 commit a176bda

File tree

11 files changed

+64
-49
lines changed

11 files changed

+64
-49
lines changed

comm/receiver-sender_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,13 @@ func TestSenderReceiver(t *testing.T) {
5252
}
5353

5454
// Listen on defined worker-1 socket for TLS connections.
55-
socketN1, err := tls.Listen("tcp", fmt.Sprintf("%s:%s", testEnv.Config.Workers[n1].IP, testEnv.Config.Workers[n1].SyncPort), internalTLSConfigN1)
55+
socketN1, err := tls.Listen("tcp", fmt.Sprintf("%s:%s", testEnv.Config.Workers[n1].ListenIP, testEnv.Config.Workers[n1].SyncPort), internalTLSConfigN1)
5656
if err != nil {
5757
t.Fatalf("[comm_test.TestSenderReceiver] Expected TLS listen for worker-1 not to fail but received: %s\n", err.Error())
5858
}
5959

6060
// Listen on defined storage socket for TLS connections.
61-
socketN2, err := tls.Listen("tcp", fmt.Sprintf("%s:%s", testEnv.Config.Storage.IP, testEnv.Config.Storage.SyncPort), internalTLSConfigN2)
61+
socketN2, err := tls.Listen("tcp", fmt.Sprintf("%s:%s", testEnv.Config.Storage.ListenIP, testEnv.Config.Storage.SyncPort), internalTLSConfigN2)
6262
if err != nil {
6363
t.Fatalf("[comm_test.TestSenderReceiver] Expected TLS listen for storage not to fail but received: %s\n", err.Error())
6464
}
@@ -114,11 +114,11 @@ func TestSenderReceiver(t *testing.T) {
114114

115115
// Create map of connections for worker-1.
116116
connsN1 := make(map[string]string)
117-
connsN1[n2] = fmt.Sprintf("%s:%s", testEnv.Config.Storage.IP, testEnv.Config.Storage.SyncPort)
117+
connsN1[n2] = fmt.Sprintf("%s:%s", testEnv.Config.Storage.PublicIP, testEnv.Config.Storage.SyncPort)
118118

119119
// Create map of connections for storage.
120120
connsN2 := make(map[string]string)
121-
connsN2[n1] = fmt.Sprintf("%s:%s", testEnv.Config.Workers[n1].IP, testEnv.Config.Workers[n1].SyncPort)
121+
connsN2[n1] = fmt.Sprintf("%s:%s", testEnv.Config.Workers[n1].PublicIP, testEnv.Config.Workers[n1].SyncPort)
122122

123123
// Initialize sending interface for worker-1.
124124
chan1, err := comm.InitSender(n1, "../test-comm-sending-worker-1.log", internalTLSConfigN1, testEnv.Config.IntlConnTimeout, testEnv.Config.IntlConnRetry, chanIncN1, chanUpdN1, n1DownSender, connsN1)

config.toml.example

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,12 @@ Greeting = "Pluto ready."
2121
HierarchySeparator = "."
2222

2323
[Distributor]
24-
IP = "127.0.0.1"
24+
# PublicIP denotes the Internet-facing IP address
25+
# this pluto node is supposed to be reachable via.
26+
PublicIP = "127.0.0.1"
27+
# ListenIP in turn is used by this pluto process to
28+
# bind locally to and listen for incoming requests.
29+
ListenIP = "127.0.0.1"
2530
Port = "993"
2631
AuthAdapter = "AuthPostgres"
2732

@@ -51,7 +56,8 @@ AuthAdapter = "AuthPostgres"
5156
[Workers]
5257

5358
[Workers.worker-1]
54-
IP = "127.0.0.1"
59+
PublicIP = "127.0.0.1"
60+
ListenIP = "127.0.0.1"
5561
# MailPort specifies the port for connections
5662
# concerning the IMAP protocol.
5763
MailPort = "20001"
@@ -76,7 +82,8 @@ AuthAdapter = "AuthPostgres"
7682
KeyLoc = "/very/complicated/and/long/path/to/your/internal-worker-1-key.pem"
7783

7884
[Workers.worker-2]
79-
IP = "127.0.0.1"
85+
PublicIP = "127.0.0.1"
86+
ListenIP = "127.0.0.1"
8087
MailPort = "20002"
8188
SyncPort = "30002"
8289
UserStart = 11
@@ -89,7 +96,8 @@ AuthAdapter = "AuthPostgres"
8996
KeyLoc = "/very/complicated/and/long/path/to/your/internal-worker-2-key.pem"
9097

9198
[Workers.worker-3]
92-
IP = "127.0.0.1"
99+
PublicIP = "127.0.0.1"
100+
ListenIP = "127.0.0.1"
93101
MailPort = "20003"
94102
SyncPort = "30003"
95103
UserStart = 21
@@ -103,7 +111,8 @@ AuthAdapter = "AuthPostgres"
103111

104112

105113
[Storage]
106-
IP = "127.0.0.1"
114+
PublicIP = "127.0.0.1"
115+
ListenIP = "127.0.0.1"
107116
MailPort = "21000"
108117
SyncPort = "31000"
109118
MaildirRoot = "/for/example/some/very/unique/path/Maildir/"

config/config.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ type IMAP struct {
3434
// the first entry point of a pluto setup, the
3535
// IMAP request authenticator and distributor.
3636
type Distributor struct {
37-
IP string
37+
PublicIP string
38+
ListenIP string
3839
Port string
3940
AuthAdapter string
4041
PublicTLS TLS
@@ -46,7 +47,8 @@ type Distributor struct {
4647
// Worker contains the connection and user sharding
4748
// information for an individual IMAP worker node.
4849
type Worker struct {
49-
IP string
50+
PublicIP string
51+
ListenIP string
5052
MailPort string
5153
SyncPort string
5254
UserStart int
@@ -59,7 +61,8 @@ type Worker struct {
5961
// Storage configures the global database node
6062
// storing all user data in a very safe manner.
6163
type Storage struct {
62-
IP string
64+
PublicIP string
65+
ListenIP string
6366
MailPort string
6467
SyncPort string
6568
MaildirRoot string

crypto/generate_pki.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ func main() {
232232
log.Println("[crypto.GeneratePKI] === Done generating root certificate ===\n")
233233

234234
// Generate distributor's internal key and signed certificate.
235-
err = CreateNodeCert(*pathPrefix, "internal-distributor", *rsaBits, notBefore, notAfter, []string{config.Distributor.IP}, rootCert, rootKey)
235+
err = CreateNodeCert(*pathPrefix, "internal-distributor", *rsaBits, notBefore, notAfter, []string{config.Distributor.PublicIP}, rootCert, rootKey)
236236
if err != nil {
237237
log.Fatal(err)
238238
}
@@ -241,15 +241,15 @@ func main() {
241241

242242
// For each worker node, generate an internal key pair
243243
// and a signed certificate.
244-
err = CreateNodeCert(*pathPrefix, fmt.Sprintf("internal-%s", name), *rsaBits, notBefore, notAfter, []string{worker.IP}, rootCert, rootKey)
244+
err = CreateNodeCert(*pathPrefix, fmt.Sprintf("internal-%s", name), *rsaBits, notBefore, notAfter, []string{worker.PublicIP}, rootCert, rootKey)
245245
if err != nil {
246246
log.Fatal(err)
247247
}
248248
}
249249

250250
// Generate the storage's internal key pair
251251
// and signed certificate.
252-
err = CreateNodeCert(*pathPrefix, "internal-storage", *rsaBits, notBefore, notAfter, []string{config.Storage.IP}, rootCert, rootKey)
252+
err = CreateNodeCert(*pathPrefix, "internal-storage", *rsaBits, notBefore, notAfter, []string{config.Storage.PublicIP}, rootCert, rootKey)
253253
if err != nil {
254254
log.Fatal(err)
255255
}

imap/distributor-commands.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ func (distr *Distributor) Login(c *Connection, req *Request) bool {
170170
distr.lock.RLock()
171171

172172
// Store worker connection information.
173-
workerIP := distr.Config.Workers[respWorker].IP
173+
workerIP := distr.Config.Workers[respWorker].PublicIP
174174
workerPort := distr.Config.Workers[respWorker].MailPort
175175

176176
distr.lock.RUnlock()

imap/distributor-commands_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ func TestMain(m *testing.M) {
9595
func TestCapability(t *testing.T) {
9696

9797
// Connect to IMAP distributor.
98-
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.IP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
98+
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.PublicIP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
9999
if err != nil {
100100
t.Fatalf("[imap.TestCapability] Error during connection attempt to IMAP distributor: %s\n", err.Error())
101101
}
@@ -159,7 +159,7 @@ func TestLogout(t *testing.T) {
159159
var answer string
160160

161161
// Connect to IMAP distributor.
162-
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.IP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
162+
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.PublicIP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
163163
if err != nil {
164164
t.Fatalf("[imap.TestLogout] Error during connection attempt to IMAP distributor: %s\n", err.Error())
165165
}
@@ -218,7 +218,7 @@ func TestLogout(t *testing.T) {
218218
func TestStartTLS(t *testing.T) {
219219

220220
// Connect to IMAP server.
221-
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.IP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
221+
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.PublicIP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
222222
if err != nil {
223223
t.Fatalf("[imap.TestStartTLS] Error during connection attempt to IMAP server: %s\n", err.Error())
224224
}
@@ -263,7 +263,7 @@ func TestStartTLS(t *testing.T) {
263263
func TestLogin(t *testing.T) {
264264

265265
// Connect to IMAP distributor.
266-
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.IP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
266+
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.PublicIP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
267267
if err != nil {
268268
t.Fatalf("[imap.TestLogin] Error during connection attempt to IMAP distributor: %s\n", err.Error())
269269
}

imap/distributor.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ func InitDistributor(config *config.Config) (*Distributor, error) {
7272
}
7373

7474
// Start to listen for incoming public connections on defined IP and port.
75-
distr.Socket, err = tls.Listen("tcp", fmt.Sprintf("%s:%s", config.Distributor.IP, config.Distributor.Port), publicTLSConfig)
75+
distr.Socket, err = tls.Listen("tcp", fmt.Sprintf("%s:%s", config.Distributor.ListenIP, config.Distributor.Port), publicTLSConfig)
7676
if err != nil {
7777
return nil, fmt.Errorf("[imap.InitDistributor] Listening for public TLS connections failed with: %s\n", err.Error())
7878
}

imap/imap-node_test.go

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,7 @@ var proxiedExpungeTests = []struct {
309309
func TestSelect(t *testing.T) {
310310

311311
// Connect to IMAP server.
312-
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.IP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
312+
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.PublicIP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
313313
if err != nil {
314314
t.Fatalf("[imap.TestSelect] Error during connection attempt to IMAP server: %s\n", err.Error())
315315
}
@@ -374,7 +374,7 @@ func TestSelect(t *testing.T) {
374374
func TestCreate(t *testing.T) {
375375

376376
// Connect to IMAP server.
377-
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.IP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
377+
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.PublicIP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
378378
if err != nil {
379379
t.Fatalf("[imap.TestCreate] Error during connection attempt to IMAP server: %s\n", err.Error())
380380
}
@@ -439,7 +439,7 @@ func TestCreate(t *testing.T) {
439439
func TestDelete(t *testing.T) {
440440

441441
// Connect to IMAP server.
442-
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.IP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
442+
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.PublicIP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
443443
if err != nil {
444444
t.Fatalf("[imap.TestDelete] Error during connection attempt to IMAP server: %s\n", err.Error())
445445
}
@@ -504,7 +504,7 @@ func TestDelete(t *testing.T) {
504504
func TestList(t *testing.T) {
505505

506506
// Connect to IMAP server.
507-
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.IP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
507+
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.PublicIP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
508508
if err != nil {
509509
t.Fatalf("[imap.TestList] Error during connection attempt to IMAP server: %s\n", err.Error())
510510
}
@@ -569,7 +569,7 @@ func TestList(t *testing.T) {
569569
func TestAppend(t *testing.T) {
570570

571571
// Connect to IMAP server.
572-
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.IP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
572+
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.PublicIP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
573573
if err != nil {
574574
t.Fatalf("[imap.TestAppend] Error during connection attempt to IMAP server: %s\n", err.Error())
575575
}
@@ -644,7 +644,7 @@ func TestAppend(t *testing.T) {
644644
func TestStore(t *testing.T) {
645645

646646
// Connect to IMAP server.
647-
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.IP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
647+
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.PublicIP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
648648
if err != nil {
649649
t.Fatalf("[imap.TestStore] Error during connection attempt to IMAP server: %s\n", err.Error())
650650
}
@@ -672,7 +672,7 @@ func TestStore(t *testing.T) {
672672
// the used connection.
673673
c.Terminate()
674674

675-
conn, err = tls.Dial("tcp", (testEnv.Config.Distributor.IP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
675+
conn, err = tls.Dial("tcp", (testEnv.Config.Distributor.PublicIP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
676676
if err != nil {
677677
t.Fatalf("[imap.TestStore] Error during connection attempt to IMAP server: %s\n", err.Error())
678678
}
@@ -750,7 +750,7 @@ func TestStore(t *testing.T) {
750750
func TestExpunge(t *testing.T) {
751751

752752
// Connect to IMAP server.
753-
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.IP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
753+
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.PublicIP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
754754
if err != nil {
755755
t.Fatalf("[imap.TestExpunge] Error during connection attempt to IMAP server: %s\n", err.Error())
756756
}
@@ -825,7 +825,7 @@ func TestExpunge(t *testing.T) {
825825
func TestProxiedSelect(t *testing.T) {
826826

827827
// Connect to IMAP server.
828-
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.IP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
828+
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.PublicIP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
829829
if err != nil {
830830
t.Fatalf("[imap.TestProxiedSelect] Error during connection attempt to IMAP server: %s\n", err.Error())
831831
}
@@ -890,7 +890,7 @@ func TestProxiedSelect(t *testing.T) {
890890
func TestProxiedCreate(t *testing.T) {
891891

892892
// Connect to IMAP server.
893-
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.IP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
893+
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.PublicIP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
894894
if err != nil {
895895
t.Fatalf("[imap.TestProxiedCreate] Error during connection attempt to IMAP server: %s\n", err.Error())
896896
}
@@ -955,7 +955,7 @@ func TestProxiedCreate(t *testing.T) {
955955
func TestProxiedDelete(t *testing.T) {
956956

957957
// Connect to IMAP server.
958-
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.IP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
958+
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.PublicIP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
959959
if err != nil {
960960
t.Fatalf("[imap.TestProxiedDelete] Error during connection attempt to IMAP server: %s\n", err.Error())
961961
}
@@ -1020,7 +1020,7 @@ func TestProxiedDelete(t *testing.T) {
10201020
func TestProxiedList(t *testing.T) {
10211021

10221022
// Connect to IMAP server.
1023-
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.IP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
1023+
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.PublicIP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
10241024
if err != nil {
10251025
t.Fatalf("[imap.TestProxiedList] Error during connection attempt to IMAP server: %s\n", err.Error())
10261026
}
@@ -1085,7 +1085,7 @@ func TestProxiedList(t *testing.T) {
10851085
func TestProxiedAppend(t *testing.T) {
10861086

10871087
// Connect to IMAP server.
1088-
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.IP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
1088+
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.PublicIP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
10891089
if err != nil {
10901090
t.Fatalf("[imap.TestProxiedAppend] Error during connection attempt to IMAP server: %s\n", err.Error())
10911091
}
@@ -1160,7 +1160,7 @@ func TestProxiedAppend(t *testing.T) {
11601160
func TestProxiedStore(t *testing.T) {
11611161

11621162
// Connect to IMAP server.
1163-
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.IP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
1163+
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.PublicIP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
11641164
if err != nil {
11651165
t.Fatalf("[imap.TestProxiedStore] Error during connection attempt to IMAP server: %s\n", err.Error())
11661166
}
@@ -1188,7 +1188,7 @@ func TestProxiedStore(t *testing.T) {
11881188
// the used connection.
11891189
c.Terminate()
11901190

1191-
conn, err = tls.Dial("tcp", (testEnv.Config.Distributor.IP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
1191+
conn, err = tls.Dial("tcp", (testEnv.Config.Distributor.PublicIP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
11921192
if err != nil {
11931193
t.Fatalf("[imap.TestProxiedStore] Error during connection attempt to IMAP server: %s\n", err.Error())
11941194
}
@@ -1266,7 +1266,7 @@ func TestProxiedStore(t *testing.T) {
12661266
func TestProxiedExpunge(t *testing.T) {
12671267

12681268
// Connect to IMAP server.
1269-
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.IP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
1269+
conn, err := tls.Dial("tcp", (testEnv.Config.Distributor.PublicIP + ":" + testEnv.Config.Distributor.Port), testEnv.TLSConfig)
12701270
if err != nil {
12711271
t.Fatalf("[imap.TestProxiedExpunge] Error during connection attempt to IMAP server: %s\n", err.Error())
12721272
}

imap/storage.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,15 +110,15 @@ func InitStorage(config *config.Config) (*Storage, error) {
110110
}
111111

112112
// Start to listen for incoming internal connections on defined IP and sync port.
113-
storage.SyncSocket, err = tls.Listen("tcp", fmt.Sprintf("%s:%s", config.Storage.IP, config.Storage.SyncPort), internalTLSConfig)
113+
storage.SyncSocket, err = tls.Listen("tcp", fmt.Sprintf("%s:%s", config.Storage.ListenIP, config.Storage.SyncPort), internalTLSConfig)
114114
if err != nil {
115115
return nil, fmt.Errorf("[imap.InitStorage] Listening for internal sync TLS connections failed with: %s\n", err.Error())
116116
}
117117

118118
log.Printf("[imap.InitStorage] Listening for incoming sync requests on %s.\n", storage.SyncSocket.Addr())
119119

120120
// Start to listen for incoming internal connections on defined IP and mail port.
121-
storage.MailSocket, err = tls.Listen("tcp", fmt.Sprintf("%s:%s", config.Storage.IP, config.Storage.MailPort), internalTLSConfig)
121+
storage.MailSocket, err = tls.Listen("tcp", fmt.Sprintf("%s:%s", config.Storage.ListenIP, config.Storage.MailPort), internalTLSConfig)
122122
if err != nil {
123123
return nil, fmt.Errorf("[imap.InitStorage] Listening for internal IMAP TLS connections failed with: %s\n", err.Error())
124124
}
@@ -148,7 +148,7 @@ func InitStorage(config *config.Config) (*Storage, error) {
148148

149149
// Create subnet to distribute CRDT changes in.
150150
curCRDTSubnet := make(map[string]string)
151-
curCRDTSubnet[workerName] = fmt.Sprintf("%s:%s", workerNode.IP, workerNode.SyncPort)
151+
curCRDTSubnet[workerName] = fmt.Sprintf("%s:%s", workerNode.PublicIP, workerNode.SyncPort)
152152

153153
// Init sending part of CRDT communication and send messages in background.
154154
storage.SyncSendChans[workerName], err = comm.InitSender("storage", sendCRDTLog, internalTLSConfig, config.IntlConnTimeout, config.IntlConnRetry, chanIncVClockWorker, chanUpdVClockWorker, downSender, curCRDTSubnet)

0 commit comments

Comments
 (0)