-
Notifications
You must be signed in to change notification settings - Fork 1k
fix resolver parsing #2351
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: dev
Are you sure you want to change the base?
fix resolver parsing #2351
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -735,7 +735,17 @@ func (options *Options) ValidateOptions() error { | |||||||||||||||||||||||||||||||||||||||||||||||||||||
| return errors.Wrapf(err, "Couldn't process resolver file \"%s\"", resolver) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| for line := range chFile { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| resolvers = append(resolvers, line) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| line = strings.TrimSpace(line) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if line != "" && strings.Contains(line, ",") { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| for item := range strings.SplitSeq(line, ",") { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| item = strings.TrimSpace(item) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if item != "" { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| resolvers = append(resolvers, item) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } else { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| resolvers = append(resolvers, line) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
737
to
+748
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fix empty line handling in resolver parsing. The else branch (line 747) appends the trimmed line regardless of whether it's empty. This occurs because the condition on line 739 only checks 🔎 Proposed fix for line := range chFile {
line = strings.TrimSpace(line)
if line != "" && strings.Contains(line, ",") {
for item := range strings.SplitSeq(line, ",") {
item = strings.TrimSpace(item)
if item != "" {
resolvers = append(resolvers, item)
}
}
- } else {
+ } else if line != "" {
resolvers = append(resolvers, line)
}
}📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } else { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| resolvers = append(resolvers, resolver) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The issue seems unrelated to the file parsing, but rather to the file not existing on the file system (I guess maybe a typo from the user), as in fact it gets appended to the slice directly (previous line 741). The resolver file format (one resolver per line) is common to all tools, if we want to support comma separated resolvers on the same line within file, maybe we should move this to utils. What do you think?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It makes sense. I'll open an issue in utils to track this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also, just asked user to check the path and it seem this isn't a path issue #2350 (comment)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
looks like the issue persists even with this change. For some reason the path lead to a non-existing file check. Maybe we can try to enforce additional checks on the resolver arguments (ex. presence of
\or/) which are prohibited as qualified domain name, and warning out the user and using default resolvers in case or erroring out since a resolver file was requested (ex. curl has hard fail when-dns-serveris used and fails, without automatic fallbacks, but maybe we should be more fault tolerant and ease automation). What do you think?