mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-12 07:20:45 +00:00
fix: harden talk silence timeout parsing (#39607) (thanks @danodoesdesign)
Co-authored-by: dano does design <dano.does.design@gmail.com>
This commit is contained in:
@@ -98,7 +98,7 @@ final class TalkModeManager: NSObject {
|
||||
|
||||
private var gateway: GatewayNodeSession?
|
||||
private var gatewayConnected = false
|
||||
private var silenceWindow: TimeInterval = TimeInterval(Self.defaultSilenceTimeoutMs) / 1000
|
||||
private var silenceWindow: TimeInterval = TimeInterval(TalkModeManager.defaultSilenceTimeoutMs) / 1000
|
||||
private var lastAudioActivity: Date?
|
||||
private var noiseFloorSamples: [Double] = []
|
||||
private var noiseFloor: Double?
|
||||
@@ -2010,6 +2010,9 @@ extension TalkModeManager {
|
||||
where timeout > 0 && timeout.rounded(.towardZero) == timeout && timeout <= Double(Int.max):
|
||||
return Int(timeout)
|
||||
case let timeout as NSNumber:
|
||||
if CFGetTypeID(timeout) == CFBooleanGetTypeID() {
|
||||
return Self.defaultSilenceTimeoutMs
|
||||
}
|
||||
let value = timeout.doubleValue
|
||||
if value > 0 && value.rounded(.towardZero) == value && value <= Double(Int.max) {
|
||||
return Int(value)
|
||||
|
||||
@@ -67,4 +67,12 @@ import Testing
|
||||
|
||||
#expect(TalkModeManager.resolvedSilenceTimeoutMs(talk) == 900)
|
||||
}
|
||||
|
||||
@Test func defaultsSilenceTimeoutMsWhenBool() {
|
||||
let talk: [String: Any] = [
|
||||
"silenceTimeoutMs": true,
|
||||
]
|
||||
|
||||
#expect(TalkModeManager.resolvedSilenceTimeoutMs(talk) == 900)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user