@@ -63,33 +63,35 @@ func IsAuthenticationError(err error) bool {
63
63
func ExchangeAddrsActive (ctx context.Context , id map [wallet.BackendID ]wire.Account , peer map [wallet.BackendID ]wire.Address , conn Conn ) error {
64
64
var err error
65
65
ok := pkg .TerminatesCtx (ctx , func () {
66
- authMsg , err2 := wire .NewAuthResponseMsg (id )
67
- if err2 != nil {
68
- err = errors .WithMessage (err2 , "creating auth message" )
69
- return
70
- }
71
- err = conn .Send (& wire.Envelope {
72
- Sender : wire .AddressMapfromAccountMap (id ),
73
- Recipient : peer ,
74
- Msg : authMsg ,
75
- })
76
- if err != nil {
77
- err = errors .WithMessage (err , "sending message" )
78
- return
79
- }
66
+ for bid := range id {
67
+ authMsg , err2 := wire .NewAuthResponseMsg (id , bid )
68
+ if err2 != nil {
69
+ err = errors .WithMessage (err2 , "creating auth message" )
70
+ return
71
+ }
72
+ err = conn .Send (& wire.Envelope {
73
+ Sender : wire .AddressMapfromAccountMap (id ),
74
+ Recipient : peer ,
75
+ Msg : authMsg ,
76
+ })
77
+ if err != nil {
78
+ err = errors .WithMessage (err , "sending message" )
79
+ return
80
+ }
80
81
81
- var e * wire.Envelope
82
- if e , err = conn .Recv (); err != nil {
83
- err = errors .WithMessage (err , "receiving message" )
84
- } else if _ , ok := e .Msg .(* wire.AuthResponseMsg ); ! ok {
85
- err = errors .Errorf ("expected AuthResponse wire msg, got %v" , e .Msg .Type ())
86
- } else if msg , ok := e .Msg .(* wire.AuthResponseMsg ); ok {
87
- if check := VerifyAddressSignature (peer , msg .Signature ); check != nil {
88
- err = errors .WithMessage (check , "verifying peer address's signature" )
82
+ var e * wire.Envelope
83
+ if e , err = conn .Recv (); err != nil {
84
+ err = errors .WithMessage (err , "receiving message" )
85
+ } else if _ , ok := e .Msg .(* wire.AuthResponseMsg ); ! ok {
86
+ err = errors .Errorf ("expected AuthResponse wire msg, got %v" , e .Msg .Type ())
87
+ } else if msg , ok := e .Msg .(* wire.AuthResponseMsg ); ok {
88
+ if check := VerifyAddressSignature (peer , msg .Signature ); check != nil {
89
+ err = errors .WithMessage (check , "verifying peer address's signature" )
90
+ }
91
+ } else if ! channel .EqualWireMaps (e .Recipient , wire .AddressMapfromAccountMap (id )) &&
92
+ ! channel .EqualWireMaps (e .Sender , peer ) {
93
+ err = NewAuthenticationError (e .Sender , e .Recipient , wire .AddressMapfromAccountMap (id ), "unmatched response sender or recipient" )
89
94
}
90
- } else if ! channel .EqualWireMaps (e .Recipient , wire .AddressMapfromAccountMap (id )) &&
91
- ! channel .EqualWireMaps (e .Sender , peer ) {
92
- err = NewAuthenticationError (e .Sender , e .Recipient , wire .AddressMapfromAccountMap (id ), "unmatched response sender or recipient" )
93
95
}
94
96
})
95
97
@@ -108,33 +110,35 @@ func ExchangeAddrsPassive(ctx context.Context, id map[wallet.BackendID]wire.Acco
108
110
var err error
109
111
addrs := wire .AddressMapfromAccountMap (id )
110
112
ok := pkg .TerminatesCtx (ctx , func () {
111
- var e * wire.Envelope
112
- if e , err = conn .Recv (); err != nil {
113
- err = errors .WithMessage (err , "receiving auth message" )
114
- } else if _ , ok := e .Msg .(* wire.AuthResponseMsg ); ! ok {
115
- err = errors .Errorf ("expected AuthResponse wire msg, got %v" , e .Msg .Type ())
116
- } else if ! channel .EqualWireMaps (e .Recipient , addrs ) {
117
- err = NewAuthenticationError (e .Sender , e .Recipient , wire .AddressMapfromAccountMap (id ), "unmatched response sender or recipient" )
118
- } else if msg , ok := e .Msg .(* wire.AuthResponseMsg ); ok {
119
- if err = VerifyAddressSignature (e .Sender , msg .Signature ); err != nil {
120
- err = errors .WithMessage (err , "verifying peer address's signature" )
113
+ for bid := range id {
114
+ var e * wire.Envelope
115
+ if e , err = conn .Recv (); err != nil {
116
+ err = errors .WithMessage (err , "receiving auth message" )
117
+ } else if _ , ok := e .Msg .(* wire.AuthResponseMsg ); ! ok {
118
+ err = errors .Errorf ("expected AuthResponse wire msg, got %v" , e .Msg .Type ())
119
+ } else if ! channel .EqualWireMaps (e .Recipient , addrs ) {
120
+ err = NewAuthenticationError (e .Sender , e .Recipient , wire .AddressMapfromAccountMap (id ), "unmatched response sender or recipient" )
121
+ } else if msg , ok := e .Msg .(* wire.AuthResponseMsg ); ok {
122
+ if err = VerifyAddressSignature (e .Sender , msg .Signature ); err != nil {
123
+ err = errors .WithMessage (err , "verifying peer address's signature" )
124
+ }
121
125
}
122
- }
123
126
124
- if err != nil {
125
- return
126
- }
127
+ if err != nil {
128
+ return
129
+ }
127
130
128
- authMsg , err2 := wire .NewAuthResponseMsg (id )
129
- if err2 != nil {
130
- err = errors .WithMessage (err2 , "creating auth message" )
131
- return
131
+ authMsg , err2 := wire .NewAuthResponseMsg (id , bid )
132
+ if err2 != nil {
133
+ err = errors .WithMessage (err2 , "creating auth message" )
134
+ return
135
+ }
136
+ addr , err = e .Sender , conn .Send (& wire.Envelope {
137
+ Sender : wire .AddressMapfromAccountMap (id ),
138
+ Recipient : e .Sender ,
139
+ Msg : authMsg ,
140
+ })
132
141
}
133
- addr , err = e .Sender , conn .Send (& wire.Envelope {
134
- Sender : wire .AddressMapfromAccountMap (id ),
135
- Recipient : e .Sender ,
136
- Msg : authMsg ,
137
- })
138
142
})
139
143
140
144
if ! ok {
0 commit comments