in src/sessionmanagerplugin/session/portsession/muxportforwarding.go [204:226]
func (p *MuxPortForwarding) transferDataToServer(log log.T, ctx context.Context) (err error) {
msg := make([]byte, config.StreamDataPayloadSize)
for {
select {
case <-ctx.Done():
return ctx.Err()
default:
var numBytes int
if numBytes, err = p.mgsConn.conn.Read(msg); err != nil {
log.Debugf("Reading from port failed with error: %v.", err)
return
}
log.Tracef("Received message of size %d from mux client.", numBytes)
if err = p.session.DataChannel.SendInputDataMessage(log, message.Output, msg[:numBytes]); err != nil {
log.Errorf("Failed to send packet on data channel: %v", err)
return
}
// sleep to process more data
time.Sleep(time.Millisecond)
}
}
}