projectdiscovery/subfinder · error
terminated with condition
Error message
%s terminated with condition: %s
What it means
DNSDB source termination notice: the final JSONL batch object from the DNSDB API carried a condition that was neither 'succeeded' nor (the already-handled) 'limited'. Per the code comments, anything else is an error condition — the results streamed so far are partial, and the user must decide to keep them or retry the query.
Solutions
- Inspect the condition string in the message to determine why DNSDB stopped (e.g. 'blocked', quota exhausted)
- If credentials are used, verify the DNSDB API key and quota tier
- Re-run the enumeration for that domain, optionally with an offset, to retrieve the remaining batches
- Treat already-received subdomains as partial results unless the condition indicates data corruption
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at pkg/subscraping/sources/dnsdb/dnsdb.go:172 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of projectdiscovery/subfinder@7a0b91f0fa (2026-09-06).
Data as JSON: /api/errors/bc1b7ae501797576.
Report an issue: GitHub.
Appendix: source
Thrown at pkg/subscraping/sources/dnsdb/dnsdb.go:172
} else if respCond != "begin" {
break
}
}
// Check the terminating jsonl object's condition. There are 3 possible scenarios:
// 1. "limited" - There are more results available, make another query with an offset
// 2. "succeeded" - The query completed successfully and all results were sent.
// 3. anything else - This is an error and should be reported to the user. The user can then decide to use the results up to this
// point or discard and retry.
if respCond == "limited" {
if offsetMax != 0 && s.results <= offsetMax {
// Reset done to false to get more results with an offset query parameter set to s.results
queryParams.Set("offset", strconv.FormatUint(s.results, 10))
continue
}
} else if respCond != "succeeded" {
// DNSDB's terminating jsonl object's cond is not "limited" or succeeded" (#3), this is an error, notify the user.
err = fmt.Errorf("%s terminated with condition: %s", sourceName, respCond)
results <- subscraping.Result{Source: sourceName, Type: subscraping.Error, Error: err}
s.errors++
}
session.DiscardHTTPResponse(resp)
break
}
}()
return results
}
// Name returns the name of the source
func (s *Source) Name() string {
return "dnsdb"
}
func (s *Source) IsDefault() bool {View on GitHub (pinned to 7a0b91f0fa)