diff --git a/hidrpc.go b/hidrpc.go index e80b996b..1a7e1d3c 100644 --- a/hidrpc.go +++ b/hidrpc.go @@ -28,6 +28,10 @@ func handleHidRPCMessage(message hidrpc.Message, session *Session) { session.hidRPCAvailable = true case hidrpc.TypeKeypressReport, hidrpc.TypeKeyboardReport: if !session.HasPermission(PermissionKeyboardInput) { + logger.Debug(). + Str("sessionID", session.ID). + Str("mode", string(session.Mode)). + Msg("keyboard input blocked: session lacks PermissionKeyboardInput") return } rpcErr = handleHidRPCKeyboardInput(message) @@ -54,6 +58,10 @@ func handleHidRPCMessage(message hidrpc.Message, session *Session) { rpcErr = handleHidRPCKeypressKeepAlive(session) case hidrpc.TypePointerReport: if !session.HasPermission(PermissionMouseInput) { + logger.Debug(). + Str("sessionID", session.ID). + Str("mode", string(session.Mode)). + Msg("pointer report blocked: session lacks PermissionMouseInput") return } pointerReport, err := message.PointerReport() @@ -64,6 +72,10 @@ func handleHidRPCMessage(message hidrpc.Message, session *Session) { rpcErr = rpcAbsMouseReport(int16(pointerReport.X), int16(pointerReport.Y), pointerReport.Button) case hidrpc.TypeMouseReport: if !session.HasPermission(PermissionMouseInput) { + logger.Debug(). + Str("sessionID", session.ID). + Str("mode", string(session.Mode)). + Msg("mouse report blocked: session lacks PermissionMouseInput") return } mouseReport, err := message.MouseReport() diff --git a/webrtc.go b/webrtc.go index d5edaef4..639ceb86 100644 --- a/webrtc.go +++ b/webrtc.go @@ -193,14 +193,7 @@ func (s *Session) initQueues() { func (s *Session) handleQueues(index int) { for msg := range s.hidQueue[index] { - // Get current session from manager to ensure we have the latest state - currentSession := sessionManager.GetSession(s.ID) - if currentSession != nil { - onHidMessage(msg, currentSession) - } else { - // Session was removed, use original to avoid nil panic - onHidMessage(msg, s) - } + onHidMessage(msg, s) } } @@ -324,16 +317,7 @@ func newSession(config SessionConfig) (*Session, error) { go func() { for msg := range session.rpcQueue { // TODO: only use goroutine if the task is asynchronous - go func(m webrtc.DataChannelMessage) { - // Get current session from manager to ensure we have the latest state - currentSession := sessionManager.GetSession(session.ID) - if currentSession != nil { - onRPCMessage(m, currentSession) - } else { - // Session was removed, use original to avoid nil panic - onRPCMessage(m, session) - } - }(msg) + go onRPCMessage(msg, session) } }()