func()

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)
		}
	}
}