mirror of
https://github.com/NoFxAiOS/nofx.git
synced 2026-07-12 23:36:55 +08:00
fix: prevent panics from unsafe type assertions in trading code + add request body limit
Security & Reliability: - Add requestBodyLimitMiddleware (1MB) to prevent OOM from oversized API payloads - Fix defer resp.Body.Close() inside loop in getPublicIPFromAPI (connection leak) - Add posFloat64/posString safe helpers for position map access Panic Prevention (critical for trading): - Convert 30+ unsafe type assertions (pos["key"].(type)) to safe comma-ok pattern across all exchange traders: OKX, Hyperliquid, Aster, Bybit, KuCoin, Gate, Bitget, Binance - Fix auto_trader_risk.go: drawdown monitor could panic and silently stop monitoring, leaving positions unprotected - Fix auto_trader_decision.go & auto_trader_loop.go: core trading loop position parsing now crash-proof - All trader/ code now has zero unsafe type assertions Frontend: - Fix config.ts: rejected promise cached forever on network error (never retries)
This commit is contained in:
@@ -5,6 +5,19 @@ import (
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// posFloat64 extracts a float64 from a position map, returning 0 on failure.
|
||||
// Use in loops where a malformed position should be skipped, not crash.
|
||||
func posFloat64(pos map[string]interface{}, key string) float64 {
|
||||
v, _ := SafeFloat64(pos, key)
|
||||
return v
|
||||
}
|
||||
|
||||
// posString extracts a string from a position map, returning "" on failure.
|
||||
func posString(pos map[string]interface{}, key string) string {
|
||||
v, _ := SafeString(pos, key)
|
||||
return v
|
||||
}
|
||||
|
||||
// SafeFloat64 Safely extract float64 value from map
|
||||
func SafeFloat64(data map[string]interface{}, key string) (float64, error) {
|
||||
value, ok := data[key]
|
||||
|
||||
Reference in New Issue
Block a user