@@ -140,45 +140,55 @@ func handleInternalSRV(m *dns.Msg, q dns.Question, suffix string) (rcode int) {
140
140
util .S .Debugf ("handleQuery nx net %s" , cnn )
141
141
return dns .RcodeNameError
142
142
}
143
- var srvs []central.SRV
143
+ type srvPeerPair struct {
144
+ PeerName string
145
+ SRV central.SRV
146
+ }
147
+ var spps []srvPeerPair
144
148
if pn == "" {
145
- srvs = make ([]central.SRV , 0 )
146
- for _ , peer := range cn .Peers {
147
- srvs = append (srvs , peer .SRVs ... )
149
+ spps = make ([]srvPeerPair , 0 )
150
+ for pn , peer := range cn .Peers {
151
+ for _ , srv := range peer .SRVs {
152
+ spps = append (spps , srvPeerPair {
153
+ PeerName : pn ,
154
+ SRV : srv ,
155
+ })
156
+ }
148
157
}
149
158
} else {
150
159
peer := cn .Peers [pn ]
151
160
if peer == nil {
152
161
util .S .Debugf ("handleQuery nx net %s peer %s" , cnn , pn )
153
162
return dns .RcodeNameError
154
163
}
155
- srvs = peer .SRVs
164
+ spps = make ([]srvPeerPair , 0 )
165
+ for _ , srv := range peer .SRVs {
166
+ spps = append (spps , srvPeerPair {
167
+ PeerName : pn ,
168
+ SRV : srv ,
169
+ })
170
+ }
156
171
}
157
- util .S .Infof ("handleQuery debug: parts: %#v srvs: %#v" , parts , srvs )
158
- for _ , srv := range srvs {
172
+ util .S .Infof ("handleQuery debug: parts: %#v srvs: %#v" , parts , spps )
173
+ for _ , spp := range spps {
174
+ srv := spp .SRV
159
175
if srv .Service != service || srv .Protocol != protocol {
160
176
continue
161
177
}
162
- var pnPart string
163
- if pn == "" {
164
- pnPart = ""
165
- } else {
166
- pnPart = pn + "."
167
- }
168
178
rr , err := dns .NewRR (fmt .Sprintf (
169
- "%s SRV %d %d %d %s%s%s" ,
179
+ "%s SRV %d %d %d %s. %s%s" ,
170
180
q .Name ,
171
181
srv .Priority ,
172
182
srv .Weight ,
173
183
srv .Port ,
174
- pnPart ,
184
+ pn ,
175
185
cnn ,
176
186
suffix ,
177
187
))
178
188
if err == nil {
179
189
m .Answer = append (m .Answer , rr )
180
190
} else {
181
- util .S .Errorf ("handleQuery debug: parts: %#v srvs: %#v error: %s" , parts , srvs , err )
191
+ util .S .Errorf ("handleQuery debug: parts: %#v srvs: %#v error: %s" , parts , spps , err )
182
192
}
183
193
}
184
194
return dns .RcodeSuccess
0 commit comments