Skip to content

Commit 5293961

Browse files
committed
UI: Cap at timeout to handle system sleep/suspend
1 parent 00914a4 commit 5293961

2 files changed

Lines changed: 21 additions & 1 deletion

File tree

dnscrypt-proxy/monitoring_ui.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,19 @@ func (ui *MonitoringUI) UpdateMetrics(pluginsState PluginsState, msg *dns.Msg, s
324324
}
325325

326326
// Update response time - back to counters lock
327-
responseTime := time.Since(start).Milliseconds()
327+
var responseTime int64
328+
if !pluginsState.requestStart.IsZero() && !pluginsState.requestEnd.IsZero() {
329+
responseTime = pluginsState.requestEnd.Sub(pluginsState.requestStart).Milliseconds()
330+
} else {
331+
// For incomplete queries, use timeout duration
332+
responseTime = pluginsState.timeout.Milliseconds()
333+
}
334+
335+
// Cap at timeout to handle system sleep/suspend
336+
maxResponseTime := pluginsState.timeout.Milliseconds()
337+
if responseTime > maxResponseTime {
338+
responseTime = maxResponseTime
339+
}
328340
mc.countersMutex.Lock()
329341
mc.responseTimeSum += uint64(responseTime)
330342
mc.responseTimeCount++

dnscrypt-proxy/plugin_query_log.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,14 @@ func (plugin *PluginQueryLog) Eval(pluginsState *PluginsState, msg *dns.Msg) err
8383
var requestDuration time.Duration
8484
if !pluginsState.requestStart.IsZero() && !pluginsState.requestEnd.IsZero() {
8585
requestDuration = pluginsState.requestEnd.Sub(pluginsState.requestStart)
86+
} else {
87+
// For incomplete queries, use timeout duration
88+
requestDuration = pluginsState.timeout
89+
}
90+
91+
// Cap at timeout to handle system sleep/suspend
92+
if requestDuration > pluginsState.timeout {
93+
requestDuration = pluginsState.timeout
8694
}
8795
var line string
8896
if plugin.format == "tsv" {

0 commit comments

Comments
 (0)