{"record":{"id":"44d1af9ab6a92036","repo":"shadow1ng/fscan","slug":"packet-rate-limited","errorCode":null,"errorMessage":"packet rate limited","messagePattern":"packet rate limited","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"common/globals.go","lineNumber":92,"sourceCode":"\tdate    = \"unknown\"\n)\n\nfunc GetVersion() string { return version }\n\n// 运行时数据已迁移到Config对象中，使用GetGlobalConfig()访问\n\n// Shell状态已迁移到State对象中，使用GetGlobalState()访问\n\n// POC配置、输出控制、发包控制、初始化已迁移到Config/State对象中\n\n// =============================================================================\n// 发包限制错误类型\n// =============================================================================\n\n// 哨兵错误 - 用于 errors.Is 判断\nvar (\n\tErrMaxPacketReached  = errors.New(\"max packet count reached\")\n\tErrPacketRateLimited = errors.New(\"packet rate limited\")\n)\n\n// PacketLimitError 发包限制错误（包含详情）\ntype PacketLimitError struct {\n\tSentinel error // ErrMaxPacketReached 或 ErrPacketRateLimited\n\tLimit    int64\n\tCurrent  int64\n}\n\nfunc (e *PacketLimitError) Error() string {\n\tif e.Sentinel == ErrMaxPacketReached {\n\t\treturn i18n.Tr(\"packet_limit_max_reached\", e.Limit)\n\t}\n\treturn i18n.Tr(\"packet_limit_rate_limited\", e.Limit)\n}\n\nfunc (e *PacketLimitError) Unwrap() error {\n\treturn e.Sentinel","sourceCodeStart":74,"sourceCodeEnd":110,"githubUrl":"https://github.com/shadow1ng/fscan/blob/95cc12e753bf43de7004e5aef42a9ffba3934303/common/globals.go#L74-L110","documentation":"Sentinel error indicating the packet rate limit is exceeded; returned as a PacketLimitError with Sentinel=ErrPacketRateLimited where Limit is the allowed rate and Current the observed count. Fires when send frequency exceeds the configured rate cap, unlike ErrMaxPacketReached which is a total-count cap.","triggerScenarios":"Thrown at common/globals.go:92 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Lower scan concurrency or increase the per-second packet rate allowance","Add backoff/timing between bursts so Current stays under Limit","Verify the rate limiter configuration on the Config object"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"95cc12e753bf43de7004e5aef42a9ffba3934303","analyzedAt":"2026-09-06T17:07:30.094Z","contentChangedAt":"2026-09-06T17:07:30.094Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}