|
|
@ -140,7 +140,7 @@ func fetchInput(ctx context.Context, s *Session, output buf.Writer) {
|
|
|
|
s.transferType = transferType
|
|
|
|
s.transferType = transferType
|
|
|
|
writer := NewWriter(s.ID, dest, output, transferType)
|
|
|
|
writer := NewWriter(s.ID, dest, output, transferType)
|
|
|
|
defer writer.Close()
|
|
|
|
defer writer.Close()
|
|
|
|
defer s.CloseUplink()
|
|
|
|
defer s.Close()
|
|
|
|
|
|
|
|
|
|
|
|
log.Trace(newError("dispatching request to ", dest))
|
|
|
|
log.Trace(newError("dispatching request to ", dest))
|
|
|
|
data, _ := s.input.ReadTimeout(time.Millisecond * 500)
|
|
|
|
data, _ := s.input.ReadTimeout(time.Millisecond * 500)
|
|
|
@ -207,8 +207,7 @@ func (m *Client) handleStatusKeep(meta *FrameMetadata, reader io.Reader) error {
|
|
|
|
|
|
|
|
|
|
|
|
func (m *Client) handleStatusEnd(meta *FrameMetadata, reader io.Reader) error {
|
|
|
|
func (m *Client) handleStatusEnd(meta *FrameMetadata, reader io.Reader) error {
|
|
|
|
if s, found := m.sessionManager.Get(meta.SessionID); found {
|
|
|
|
if s, found := m.sessionManager.Get(meta.SessionID); found {
|
|
|
|
s.CloseDownlink()
|
|
|
|
s.Close()
|
|
|
|
s.output.Close()
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if meta.Option.Has(OptionData) {
|
|
|
|
if meta.Option.Has(OptionData) {
|
|
|
|
return drain(reader)
|
|
|
|
return drain(reader)
|
|
|
@ -298,7 +297,7 @@ func handle(ctx context.Context, s *Session, output buf.Writer) {
|
|
|
|
log.Trace(newError("session ", s.ID, " ends: ").Base(err))
|
|
|
|
log.Trace(newError("session ", s.ID, " ends: ").Base(err))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
writer.Close()
|
|
|
|
writer.Close()
|
|
|
|
s.CloseDownlink()
|
|
|
|
s.Close()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (w *ServerWorker) handleStatusKeepAlive(meta *FrameMetadata, reader io.Reader) error {
|
|
|
|
func (w *ServerWorker) handleStatusKeepAlive(meta *FrameMetadata, reader io.Reader) error {
|
|
|
@ -347,8 +346,7 @@ func (w *ServerWorker) handleStatusKeep(meta *FrameMetadata, reader io.Reader) e
|
|
|
|
|
|
|
|
|
|
|
|
func (w *ServerWorker) handleStatusEnd(meta *FrameMetadata, reader io.Reader) error {
|
|
|
|
func (w *ServerWorker) handleStatusEnd(meta *FrameMetadata, reader io.Reader) error {
|
|
|
|
if s, found := w.sessionManager.Get(meta.SessionID); found {
|
|
|
|
if s, found := w.sessionManager.Get(meta.SessionID); found {
|
|
|
|
s.CloseUplink()
|
|
|
|
s.Close()
|
|
|
|
s.output.Close()
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if meta.Option.Has(OptionData) {
|
|
|
|
if meta.Option.Has(OptionData) {
|
|
|
|
return drain(reader)
|
|
|
|
return drain(reader)
|
|
|
|