()
| 362 | } |
| 363 | |
| 364 | func (c *ForwardCtx) handleBackend() { |
| 365 | for { |
| 366 | packet := Packet{} |
| 367 | err := c.decoder.Decode(&packet) |
| 368 | if err != nil { |
| 369 | c.logger.Error(message.Wrap( |
| 370 | err, |
| 371 | message.MSSHConnected, |
| 372 | "Error decoding packet from backend", |
| 373 | )) |
| 374 | return |
| 375 | } |
| 376 | switch packet.Type { |
| 377 | case PACKET_DATA: |
| 378 | c.handleData(&packet) |
| 379 | case PACKET_CLOSE_CONNECTION: |
| 380 | c.handleClose(&packet) |
| 381 | case PACKET_SUCCESS: |
| 382 | c.handleSuccess(&packet) |
| 383 | case PACKET_ERROR: |
| 384 | c.handleError(&packet) |
| 385 | case PACKET_NEW_CONNECTION: |
| 386 | c.handleNewConnection(&packet) |
| 387 | case PACKET_NO_MORE_CONNECTIONS: |
| 388 | if !c.stopped { |
| 389 | c.stopped = true |
| 390 | close(c.connectionChannel) |
| 391 | } |
| 392 | default: |
| 393 | c.logger.Warning( |
| 394 | message.NewMessage( |
| 395 | message.EAgentUnknownPacket, |
| 396 | "Received unknown packet type %d from agent", |
| 397 | packet.Type, |
| 398 | ), |
| 399 | ) |
| 400 | } |
| 401 | } |
| 402 | } |
| 403 | |
| 404 | func (c *ForwardCtx) unmarshalSetup(payload []byte) (SetupPacket, error) { |
| 405 | packet := SetupPacket{} |
no test coverage detected