@@ -198,25 +198,37 @@ func (s *Server) sessionHandler(session ssh.Session) {
198
198
return
199
199
}
200
200
201
- err := s .sessionStart (session , extraEnv )
201
+ m := metricsForSession (magicType (session ))
202
+ err := s .sessionStart (session , m , extraEnv )
202
203
var exitError * exec.ExitError
203
204
if xerrors .As (err , & exitError ) {
204
- s .logger .Debug (ctx , "ssh session returned" , slog .Error (exitError ))
205
+ s .logger .Warn (ctx , "ssh session returned" , slog .Error (exitError ))
206
+ m .sessionError .Add (1 )
205
207
_ = session .Exit (exitError .ExitCode ())
206
208
return
207
209
}
208
210
if err != nil {
209
211
s .logger .Warn (ctx , "ssh session failed" , slog .Error (err ))
210
212
// This exit code is designed to be unlikely to be confused for a legit exit code
211
213
// from the process.
212
- metricSessionError .Add (1 )
214
+ m . sessionError .Add (1 )
213
215
_ = session .Exit (MagicSessionErrorCode )
214
216
return
215
217
}
216
218
_ = session .Exit (0 )
217
219
}
218
220
219
- func (s * Server ) sessionStart (session ssh.Session , extraEnv []string ) (retErr error ) {
221
+ func magicType (session ssh.Session ) string {
222
+ for _ , kv := range session .Environ () {
223
+ if ! strings .HasPrefix (kv , MagicSessionTypeEnvironmentVariable ) {
224
+ continue
225
+ }
226
+ return strings .TrimPrefix (kv , MagicSessionTypeEnvironmentVariable + "=" )
227
+ }
228
+ return ""
229
+ }
230
+
231
+ func (s * Server ) sessionStart (session ssh.Session , m sessionMetricsObject , extraEnv []string ) (retErr error ) {
220
232
ctx := session .Context ()
221
233
env := append (session .Environ (), extraEnv ... )
222
234
var magicType string
@@ -241,7 +253,6 @@ func (s *Server) sessionStart(session ssh.Session, extraEnv []string) (retErr er
241
253
s .logger .Warn (ctx , "invalid magic ssh session type specified" , slog .F ("type" , magicType ))
242
254
}
243
255
244
- m := metricsForSession (magicType )
245
256
cmd , err := s .CreateCommand (ctx , session .RawCommand (), env )
246
257
if err != nil {
247
258
m .agentCreateCommandError .Add (1 )
0 commit comments