nolint:dupl
( channelMetadata metadata.ChannelMetadata, requestID uint64, request *ssh.Request, sessionChannel SessionChannelHandler, logger log.Logger, )
| 1087 | |
| 1088 | //nolint:dupl |
| 1089 | func (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 | ) |
no test coverage detected