{"record":{"id":"b4eac9788697dbd5","repo":"projectdiscovery/subfinder","slug":"s","errorCode":null,"errorMessage":"%s","messagePattern":"%s","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/subscraping/sources/bufferover/bufferover.go","lineNumber":85,"sourceCode":"\t\treturn\n\t}\n\n\tvar bufforesponse response\n\terr = jsoniter.NewDecoder(resp.Body).Decode(&bufforesponse)\n\tif err != nil {\n\t\tresults <- subscraping.Result{Source: s.Name(), Type: subscraping.Error, Error: err}\n\t\ts.errors++\n\t\tsession.DiscardHTTPResponse(resp)\n\t\treturn\n\t}\n\n\tsession.DiscardHTTPResponse(resp)\n\n\tmetaErrors := bufforesponse.Meta.Errors\n\n\tif len(metaErrors) > 0 {\n\t\tresults <- subscraping.Result{\n\t\t\tSource: s.Name(), Type: subscraping.Error, Error: fmt.Errorf(\"%s\", strings.Join(metaErrors, \", \")),\n\t\t}\n\t\ts.errors++\n\t\treturn\n\t}\n\n\tvar subdomains []string\n\n\tif len(bufforesponse.FDNSA) > 0 {\n\t\tsubdomains = bufforesponse.FDNSA\n\t\tsubdomains = append(subdomains, bufforesponse.RDNS...)\n\t} else if len(bufforesponse.Results) > 0 {\n\t\tsubdomains = bufforesponse.Results\n\t}\n\n\tfor _, subdomain := range subdomains {\n\t\tfor _, value := range session.Extractor.Extract(subdomain) {\n\t\t\tselect {\n\t\t\tcase <-ctx.Done():","sourceCodeStart":67,"sourceCodeEnd":103,"githubUrl":"https://github.com/projectdiscovery/subfinder/blob/7a0b91f0fac01b62c65328bd771a3560ae611d6a/pkg/subscraping/sources/bufferover/bufferover.go#L67-L103","documentation":"The BufferOver source checks the 'errors' array in the API response meta; if any errors are present, they are joined with commas and emitted as a single error Result via fmt.Errorf(\"%s\", strings.Join(metaErrors, \", \")). This propagates BufferOver's own API error messages to the caller.","triggerScenarios":"BufferOver API responds with bufforesponse.Meta.Errors non-empty — usually invalid API key, quota exhausted, or a malformed query rejected by the service.","commonSituations":"Missing or expired BufferOver API key in provider config; exceeding daily quota; service-side errors on certain domains.","solutions":["Verify the BufferOver API key in the provider config file","Check your BufferOver quota/billing status","Read the joined error strings — they contain the provider's own explanation","Retry later or disable the bufferover source if it keeps failing"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"for result := range results {\n    if result.Type == subscraping.Error {\n        gologger.Warning().Msgf(\"bufferover: %v\", result.Error)\n        continue\n    }\n    // process result\n}","preventionTips":["Keep the BufferOver API key valid and funded","Watch quota usage","Filter/skip Error-type results per source"],"tags":["bufferover","api","upstream"],"backgroundTag":"upstream-api-error","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"}