From 78e740add7c0464139b1d10f9f227589a7c99777 Mon Sep 17 00:00:00 2001 From: Virgil Date: Sat, 4 Apr 2026 12:04:42 +0000 Subject: [PATCH] fix(proxy): reset login activity timer Co-Authored-By: Virgil --- miner_runtime.go | 1 + miner_runtime_test.go | 6 ++++++ proxy_runtime.go | 4 ++++ 3 files changed, 11 insertions(+) diff --git a/miner_runtime.go b/miner_runtime.go index 3a70260..f14c945 100644 --- a/miner_runtime.go +++ b/miner_runtime.go @@ -213,6 +213,7 @@ func (m *Miner) handleLogin(request minerRequest) { m.events.Dispatch(Event{Type: EventLogin, Miner: m}) } + m.Touch() if m.State() == MinerStateClosing { return } diff --git a/miner_runtime_test.go b/miner_runtime_test.go index 82652eb..b6d48b5 100644 --- a/miner_runtime_test.go +++ b/miner_runtime_test.go @@ -14,9 +14,12 @@ func TestMiner_Login_Good(t *testing.T) { defer clientConn.Close() miner := NewMiner(serverConn, 3333, nil) + before := miner.LastActivityAt() miner.Start() defer miner.Close() + time.Sleep(5 * time.Millisecond) + encoder := json.NewEncoder(clientConn) if err := encoder.Encode(map[string]interface{}{ "id": 1, @@ -45,6 +48,9 @@ func TestMiner_Login_Good(t *testing.T) { if response["jsonrpc"] != "2.0" { t.Fatalf("unexpected response: %#v", response) } + if !miner.LastActivityAt().After(before) { + t.Fatalf("expected login to refresh last activity timestamp, got before=%s after=%s", before, miner.LastActivityAt()) + } result := response["result"].(map[string]interface{}) id, _ := result["id"].(string) diff --git a/proxy_runtime.go b/proxy_runtime.go index 531f8bd..f1fb45e 100644 --- a/proxy_runtime.go +++ b/proxy_runtime.go @@ -2,6 +2,7 @@ package proxy import ( "crypto/tls" + "errors" "net" "time" ) @@ -15,6 +16,9 @@ type splitterShutdown interface { // // p, errorValue := proxy.New(config) func New(config *Config) (*Proxy, error) { + if config == nil { + return nil, errors.New("config is nil") + } if errorValue := config.Validate(); errorValue != nil { return nil, errorValue }