Skip to content

Commit f2b7ab5

Browse files
committed
Simplify segfetcher requests
1 parent 1b1893e commit f2b7ab5

File tree

1 file changed

+8
-57
lines changed

1 file changed

+8
-57
lines changed

directfetcher/fetcher.go

Lines changed: 8 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -114,12 +114,8 @@ func New(topo *topology.Loader, trustDB trust.DB) *Fetcher {
114114
func (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

173129
func (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

Comments
 (0)