@@ -114,12 +114,8 @@ func New(topo *topology.Loader, trustDB trust.DB) *Fetcher {
114114func (f * Fetcher ) FetchPaths (ctx context.Context , dst addr.IA ) ([]snet.Path , error ) {
115115 src := f .topo .IA ()
116116 srcCore := f .topo .Core ()
117- dstCore , err := f .fetchASType (ctx , dst )
118- if err != nil {
119- return nil , err
120- }
121117
122- requests := f .createRequests (src , srcCore , dst , dstCore )
118+ requests := f .createRequests (src , srcCore , dst )
123119 ups , cores , downs , err := f .fetchSegments (ctx , requests )
124120 if err != nil {
125121 return nil , err
@@ -129,68 +125,23 @@ func (f *Fetcher) FetchPaths(ctx context.Context, dst addr.IA) ([]snet.Path, err
129125 return f .convertPaths (cpaths )
130126}
131127
132- func (f * Fetcher ) fetchASType (ctx context.Context , dst addr.IA ) (bool , error ) {
133- if dst .IsWildcard () {
134- panic ("invalid argument: dst must not be a wildcard" )
135- }
136-
137- src := f .topo .IA ()
138- req := segfetcher.Request {
139- Src : toWildcard (src ), Dst : dst , SegType : 0 /* unspecified */ }
140- replies := f .segRequester .Request (ctx , segfetcher.Requests {req })
141- for reply := range replies {
142- if src .ISD () == dst .ISD () {
143- if reply .Err != nil {
144- return false , reply .Err
145- }
146- if len (reply .Segments ) > 0 {
147- if reply .Segments [0 ].Type == segment .TypeCore {
148- return true , nil
149- } else {
150- return false , nil
151- }
152- } else {
153- return true , nil
154- }
155- } else {
156- if reply .Err != nil {
157- return false , nil
158- }
159- if len (reply .Segments ) > 0 {
160- if reply .Segments [0 ].Type == segment .TypeCore {
161- return true , nil
162- } else {
163- return false , nil
164- }
165- } else {
166- return false , nil
167- }
168- }
169- }
170- return false , serrors .New ("failed to fetch AS type" )
171- }
172128
173129func (f * Fetcher ) createRequests (
174- src addr.IA , srcCore bool , dst addr.IA , dstCore bool ) segfetcher.Requests {
175- switch {
176- case ! srcCore && ! dstCore :
130+ src addr.IA , srcCore bool , dst addr.IA ) segfetcher.Requests {
131+ if srcCore {
177132 return segfetcher.Requests {
178- {Src : src , Dst : toWildcard (src ), SegType : segment .TypeUp },
179- {Src : toWildcard (src ), Dst : toWildcard (dst ), SegType : segment .TypeCore },
133+ {Src : src , Dst : dst , SegType : segment .TypeDown },
134+ {Src : src , Dst : dst , SegType : segment .TypeCore },
135+ {Src : src , Dst : toWildcard (dst ), SegType : segment .TypeCore },
180136 {Src : toWildcard (dst ), Dst : dst , SegType : segment .TypeDown },
181137 }
182- case ! srcCore && dstCore :
138+ } else {
183139 return segfetcher.Requests {
184140 {Src : src , Dst : toWildcard (src ), SegType : segment .TypeUp },
141+ {Src : toWildcard (src ), Dst : toWildcard (dst ), SegType : segment .TypeCore },
185142 {Src : toWildcard (src ), Dst : dst , SegType : segment .TypeCore },
186- }
187- case srcCore && ! dstCore :
188- return segfetcher.Requests {
189- {Src : src , Dst : toWildcard (dst ), SegType : segment .TypeCore },
190143 {Src : toWildcard (dst ), Dst : dst , SegType : segment .TypeDown },
191144 }
192- default :
193- return segfetcher.Requests {{Src : src , Dst : dst , SegType : segment .TypeCore }}
194145 }
195146}
196147
0 commit comments