{"record":{"id":"bc1b7ae501797576","repo":"projectdiscovery/subfinder","slug":"s-terminated-with-condition-s","errorCode":null,"errorMessage":"%s terminated with condition: %s","messagePattern":"(.+?) terminated with condition: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/subscraping/sources/dnsdb/dnsdb.go","lineNumber":172,"sourceCode":"\t\t\t\t} else if respCond != \"begin\" {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Check the terminating jsonl object's condition. There are 3 possible scenarios:\n\t\t\t// 1. \"limited\" - There are more results available, make another query with an offset\n\t\t\t// 2. \"succeeded\" - The query completed successfully and all results were sent.\n\t\t\t// 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\n\t\t\t// point or discard and retry.\n\t\t\tif respCond == \"limited\" {\n\t\t\t\tif offsetMax != 0 && s.results <= offsetMax {\n\t\t\t\t\t// Reset done to false to get more results with an offset query parameter set to s.results\n\t\t\t\t\tqueryParams.Set(\"offset\", strconv.FormatUint(s.results, 10))\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t} else if respCond != \"succeeded\" {\n\t\t\t\t// DNSDB's terminating jsonl object's cond is not \"limited\" or succeeded\" (#3), this is an error, notify the user.\n\t\t\t\terr = fmt.Errorf(\"%s terminated with condition: %s\", sourceName, respCond)\n\t\t\t\tresults <- subscraping.Result{Source: sourceName, Type: subscraping.Error, Error: err}\n\t\t\t\ts.errors++\n\t\t\t}\n\n\t\t\tsession.DiscardHTTPResponse(resp)\n\t\t\tbreak\n\t\t}\n\t}()\n\n\treturn results\n}\n\n// Name returns the name of the source\nfunc (s *Source) Name() string {\n\treturn \"dnsdb\"\n}\n\nfunc (s *Source) IsDefault() bool {","sourceCodeStart":154,"sourceCodeEnd":190,"githubUrl":"https://github.com/projectdiscovery/subfinder/blob/7a0b91f0fac01b62c65328bd771a3560ae611d6a/pkg/subscraping/sources/dnsdb/dnsdb.go#L154-L190","documentation":"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.","triggerScenarios":"Thrown at pkg/subscraping/sources/dnsdb/dnsdb.go:172 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","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"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"7a0b91f0fac01b62c65328bd771a3560ae611d6a","analyzedAt":"2026-09-06T23:52:02.109Z","contentChangedAt":"2026-09-06T23:52:02.109Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}