@@ -160,7 +160,7 @@ func (srv *Server) Start() (err error) {
160
160
}
161
161
srvlog .Infoln ("Starting Server" )
162
162
163
- // initialize all the fields
163
+ // static fields
164
164
if srv .PrivateKey == nil {
165
165
return fmt .Errorf ("Server.PrivateKey must be set to a non-nil key" )
166
166
}
@@ -170,31 +170,32 @@ func (srv *Server) Start() (err error) {
170
170
srv .quit = make (chan struct {})
171
171
srv .peers = make (map [discover.NodeID ]* Peer )
172
172
srv .peerConnect = make (chan * discover.Node )
173
-
174
173
if srv .setupFunc == nil {
175
174
srv .setupFunc = setupConn
176
175
}
177
176
if srv .Blacklist == nil {
178
177
srv .Blacklist = NewBlacklist ()
179
178
}
180
- if srv .ListenAddr != "" {
181
- if err := srv .startListening (); err != nil {
182
- return err
183
- }
184
- }
185
179
186
- // dial stuff
180
+ // node table
187
181
ntab , err := discover .ListenUDP (srv .PrivateKey , srv .ListenAddr , srv .NAT )
188
182
if err != nil {
189
183
return err
190
184
}
191
185
srv .ntab = ntab
192
186
187
+ // handshake
193
188
srv .ourHandshake = & protoHandshake {Version : baseProtocolVersion , Name : srv .Name , ID : ntab .Self ()}
194
189
for _ , p := range srv .Protocols {
195
190
srv .ourHandshake .Caps = append (srv .ourHandshake .Caps , p .cap ())
196
191
}
197
192
193
+ // listen/dial
194
+ if srv .ListenAddr != "" {
195
+ if err := srv .startListening (); err != nil {
196
+ return err
197
+ }
198
+ }
198
199
if srv .Dialer == nil {
199
200
srv .Dialer = & net.Dialer {Timeout : defaultDialTimeout }
200
201
}
0 commit comments