|
|
@@ -295,6 +295,16 @@ func (m *Client) fetchOutput() {
|
|
|
log.Trace(newError("failed to read metadata").Base(err))
|
|
|
break
|
|
|
}
|
|
|
+ if meta.SessionStatus == SessionStatusKeepAlive {
|
|
|
+ if meta.Option.Has(OptionData) {
|
|
|
+ if err := drain(reader); err != nil {
|
|
|
+ log.Trace(newError("failed to read data").Base(err))
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ continue
|
|
|
+ }
|
|
|
+
|
|
|
m.access.RLock()
|
|
|
s, found := m.sessions[meta.SessionID]
|
|
|
m.access.RUnlock()
|
|
|
@@ -390,6 +400,16 @@ func (w *ServerWorker) run(ctx context.Context) {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+ if meta.SessionStatus == SessionStatusKeepAlive {
|
|
|
+ if meta.Option.Has(OptionData) {
|
|
|
+ if err := drain(reader); err != nil {
|
|
|
+ log.Trace(newError("failed to read data").Base(err))
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ continue
|
|
|
+ }
|
|
|
+
|
|
|
w.access.RLock()
|
|
|
s, found := w.sessions[meta.SessionID]
|
|
|
w.access.RUnlock()
|