MCPcopy
hub / github.com/Eugeny/tabby / setupSocketChannelEvents

Method setupSocketChannelEvents

tabby-ssh/src/session/ssh.ts:881–930  ·  view source on GitHub ↗
(channel: russh.Channel, socket: Socket, logPrefix: string)

Source from the content-addressed store, hash-verified

879 }
880
881 private setupSocketChannelEvents (channel: russh.Channel, socket: Socket, logPrefix: string): void {
882 // Channel → Socket data flow with error handling
883 channel.data$.subscribe({
884 next: data => socket.write(data),
885 error: err => {
886 this.logger.error(`${logPrefix}: channel data error: ${err}`)
887 socket.destroy()
888 },
889 })
890
891 // Socket → Channel data flow with proper conversion
892 socket.on('data', data => {
893 try {
894 channel.write(new Uint8Array(data.buffer, data.byteOffset, data.byteLength))
895 } catch (err) {
896 this.logger.error(`${logPrefix}: channel write error: ${err}`)
897 socket.destroy(new Error(`${logPrefix}failed to write to channel: ${err}`))
898 }
899 })
900
901 // Handle EOF from remote
902 channel.eof$.subscribe(() => {
903 this.logger.debug(`${logPrefix}: channel EOF received, ending socket`)
904 socket.end()
905 })
906
907 // Handle channel close
908 channel.closed$.subscribe(() => {
909 this.logger.debug(`${logPrefix}: channel closed, destroying socket`)
910 socket.destroy()
911 })
912
913 // Handle socket errors
914 socket.on('error', err => {
915 this.logger.error(`${logPrefix}: socket error: ${err}`)
916 channel.close()
917 })
918
919 // Handle socket close
920 socket.on('close', () => {
921 this.logger.debug(`${logPrefix}: socket closed, closing channel`)
922 channel.close()
923 })
924
925 // Handle EOF from local
926 socket.on('end', () => {
927 this.logger.debug(`${logPrefix}: socket end, sending EOF to channel`)
928 channel.eof()
929 })
930 }
931
932 async loadPrivateKey (name: string, privateKeyContents: Buffer): Promise<russh.KeyPair> {
933 this.activePrivateKey = await this.loadPrivateKeyWithPassphraseMaybe(privateKeyContents.toString())

Callers 2

startMethod · 0.95
addPortForwardMethod · 0.95

Calls 6

errorMethod · 0.80
onMethod · 0.80
subscribeMethod · 0.45
writeMethod · 0.45
destroyMethod · 0.45
closeMethod · 0.45

Tested by

no test coverage detected