Fix broken heartbeat timeout

Since we update timeout when WE send data, which we do periodically the client will never timeout,
until we get a real socket exception which might be a while.