core: make sure to call swarm.FilterAddrs
also move network setup into its own self-contained func
Juan Batiz-Benet committed
Jan 10, 2015 at 08:07 UTC
1bd69b19acc7c7f148dc9186a1481a68d925e75b
1 file changed
+30
-19
core/core.go
+30
-19
@@ -150,26 +150,9 @@ func (n *IpfsNode) StartOnlineServices() error {
150
return err
151
}
152
153
- // setup the network
154
- listenAddrs, err := listenAddresses(n.Config)
155
- if err != nil {
156
- return debugerror.Wrap(err)
157
- }
158
- network, err := swarm.NewNetwork(ctx, listenAddrs, n.Identity, n.Peerstore)
159
- if err != nil {
160
- return debugerror.Wrap(err)
161
- }
162
- n.AddChildGroup(network.CtxGroup())
163
- n.PeerHost = p2pbhost.New(network)
164
-
165
- // explicitly set these as our listen addrs.
166
- // (why not do it inside inet.NewNetwork? because this way we can
167
- // listen on addresses without necessarily advertising those publicly.)
168
- addrs, err := n.PeerHost.Network().InterfaceListenAddresses()
169
- if err != nil {
170
- return debugerror.Wrap(err)
153
+ if err := n.startNetwork(); err != nil {
154
+ return err
155
}
172
- n.Peerstore.AddAddresses(n.Identity, addrs)
156
157
// setup diagnostics service
158
n.Diagnostics = diag.NewDiagnostics(n.Identity, n.PeerHost)
@@ -199,6 +182,34 @@ func (n *IpfsNode) StartOnlineServices() error {
182
return nil
183
}
184
185
+func (n *IpfsNode) startNetwork() error {
186
+ ctx := n.Context()
187
+
188
+ // setup the network
189
+ listenAddrs, err := listenAddresses(n.Config)
190
+ if err != nil {
191
+ return debugerror.Wrap(err)
192
+ }
193
+ // make sure we dont error out if our config includes some addresses we cant use.
194
+ listenAddrs = swarm.FilterAddrs(listenAddrs)
195
+ network, err := swarm.NewNetwork(ctx, listenAddrs, n.Identity, n.Peerstore)
196
+ if err != nil {
197
+ return debugerror.Wrap(err)
198
+ }
199
+ n.AddChildGroup(network.CtxGroup())
200
+ n.PeerHost = p2pbhost.New(network)
201
+
202
+ // explicitly set these as our listen addrs.
203
+ // (why not do it inside inet.NewNetwork? because this way we can
204
+ // listen on addresses without necessarily advertising those publicly.)
205
+ addrs, err := n.PeerHost.Network().InterfaceListenAddresses()
206
+ if err != nil {
207
+ return debugerror.Wrap(err)
208
+ }
209
+ n.Peerstore.AddAddresses(n.Identity, addrs)
210
+ return nil
211
+}
212
+
213
func (n *IpfsNode) teardown() error {
214
if err := n.Datastore.Close(); err != nil {
215
return err