8460: Inject permChecker from main.
[arvados.git] / services / ws / session_v0.go
index 0fd50039c14bf9366dc2b6dc7d2abf9801d55018..a60a4a382fd781c368c31fe8ea9cc8533a6b2867 100644 (file)
@@ -8,8 +8,7 @@ import (
        "sync/atomic"
        "time"
 
-       "git.curoverse.com/arvados.git/sdk/go/arvados"
-       log "github.com/Sirupsen/logrus"
+       "github.com/Sirupsen/logrus"
 )
 
 var (
@@ -29,17 +28,17 @@ type v0session struct {
        permChecker   permChecker
        subscriptions []v0subscribe
        lastMsgID     uint64
-       log           *log.Entry
+       log           *logrus.Entry
        mtx           sync.Mutex
        setupOnce     sync.Once
 }
 
-func NewSessionV0(ws wsConn, sendq chan<- interface{}, ac arvados.Client, db *sql.DB) (session, error) {
+func NewSessionV0(ws wsConn, sendq chan<- interface{}, db *sql.DB, pc permChecker) (session, error) {
        sess := &v0session{
                sendq:       sendq,
                ws:          ws,
                db:          db,
-               permChecker: NewPermChecker(ac),
+               permChecker: pc,
                log:         logger(ws.Request().Context()),
        }
 
@@ -171,7 +170,11 @@ func (sub *v0subscribe) sendOldEvents(sess *v0session) {
                        db:       sess.db,
                }
                if sub.match(sess, e) {
-                       sess.sendq <- e
+                       select {
+                       case sess.sendq <- e:
+                       case <-sess.ws.Request().Context().Done():
+                               return
+                       }
                }
        }
        if err := rows.Err(); err != nil {