@@ -66,26 +66,27 @@ func (m middleware) acquireSession(ctx context.Context, r heligo.Request,
6666 } else {
6767 db = session .Db
6868 }
69- if session .DbConn == nil {
69+ if session .DbConn == nil || session .DbConn .Conn ().PgConn ().IsClosed () {
70+ if session .DbConn != nil {
71+ // Connection went stale while held by the session — release it
72+ session .DbConn .Release ()
73+ session .DbConn = nil
74+ }
7075 dbconn , err = database .AcquireConnection (ctx , db )
7176 if err != nil {
7277 return nil , nil , http .StatusInternalServerError , err
7378 }
7479 session .DbConn = dbconn
7580 newAcquire = true
76-
77- claimsString = session .Claims .RawClaims
7881 } else {
7982 dbconn = session .DbConn
8083 }
84+ claimsString = session .Claims .RawClaims
8185 err = database .PrepareConnection (ctx , dbconn , session .Claims .Role , claimsString , newAcquire )
8286 if err != nil {
8387 return nil , nil , http .StatusInternalServerError , err
8488 }
8589 ctx = database .FillContext (ctx , r .Request , db , dbconn .Conn (), session .Claims .Role )
86- if err != nil {
87- return nil , nil , http .StatusInternalServerError , err
88- }
8990 return ctx , session , http .StatusOK , nil
9091}
9192
@@ -98,7 +99,7 @@ func (m middleware) releaseSession(ctx context.Context, status int, session *Ses
9899 // Otherwise it will be released in the sessionmanager after a cer
99100 if ! m .SessionManager ().enabled {
100101 err = database .ReleaseConnection (ctx , session .DbConn , httpErr , true )
101- } else if database .HasTX (session .DbConn ) {
102+ } else if session . DbConn != nil && database .HasTX (session .DbConn ) {
102103 err = database .ReleaseConnection (ctx , session .DbConn , httpErr , false )
103104 session .DbConn = nil
104105 }
0 commit comments