MCPcopy Index your code
hub / github.com/ContainerSSH/ContainerSSH / handleChannelRequest

Method handleChannelRequest

internal/sshserver/serverImpl.go:1089–1148  ·  view source on GitHub ↗

nolint:dupl

(
	channelMetadata metadata.ChannelMetadata,
	requestID uint64,
	request *ssh.Request,
	sessionChannel SessionChannelHandler,
	logger log.Logger,
)

Source from the content-addressed store, hash-verified

1087
1088//nolint:dupl
1089func (s *serverImpl) handleChannelRequest(
1090 channelMetadata metadata.ChannelMetadata,
1091 requestID uint64,
1092 request *ssh.Request,
1093 sessionChannel SessionChannelHandler,
1094 logger log.Logger,
1095) {
1096 reply := s.createReply(request, logger)
1097 payload, err := s.unmarshalChannelRequestPayload(request)
1098 if payload == nil {
1099 sessionChannel.OnUnsupportedChannelRequest(requestID, request.Type, request.Payload)
1100 reply(false, fmt.Sprintf("unsupported request type: %s", request.Type), nil)
1101 return
1102 }
1103 if err != nil {
1104 logger.Debug(
1105 messageCodes.Wrap(
1106 err,
1107 messageCodes.ESSHDecodeFailed,
1108 "failed to unmarshal %s request payload",
1109 request.Type,
1110 ),
1111 )
1112 sessionChannel.OnFailedDecodeChannelRequest(requestID, request.Type, request.Payload, err)
1113 reply(false, "failed to unmarshal payload", nil)
1114 return
1115 }
1116 logger.Debug(
1117 messageCodes.NewMessage(
1118 messageCodes.MSSHChannelRequest,
1119 "%s channel request from client",
1120 request.Type,
1121 ).Label("RequestType", request.Type),
1122 )
1123 if err := s.handleDecodedChannelRequest(
1124 channelMetadata,
1125 requestID,
1126 ssh2.RequestType(request.Type),
1127 payload,
1128 sessionChannel,
1129 ); err != nil {
1130 logger.Debug(
1131 messageCodes.NewMessage(
1132 messageCodes.MSSHChannelRequestFailed,
1133 "%s channel request from client failed",
1134 request.Type,
1135 ).Label("RequestType", request.Type),
1136 )
1137 reply(false, err.Error(), err)
1138 return
1139 }
1140 logger.Debug(
1141 messageCodes.NewMessage(
1142 messageCodes.MSSHChannelRequestSuccessful,
1143 "%s channel request from client successful",
1144 request.Type,
1145 ).Label("RequestType", request.Type),
1146 )

Callers 1

handleSessionChannelMethod · 0.95

Calls 8

createReplyMethod · 0.95
DebugMethod · 0.65
LabelMethod · 0.65
ErrorMethod · 0.65

Tested by

no test coverage detected