()
| 569 | } |
| 570 | |
| 571 | func (c *ForwardCtx) StartServerForward() (chan *Connection, error) { |
| 572 | c.init() |
| 573 | |
| 574 | setupPacket := SetupPacket{ |
| 575 | ConnectionType: CONNECTION_TYPE_PORT_DIAL, |
| 576 | } |
| 577 | mar, err := cbor.Marshal(&setupPacket) |
| 578 | if err != nil { |
| 579 | c.logger.Error(message.Wrap( |
| 580 | err, |
| 581 | message.EAgentDecodingFailed, |
| 582 | "Error marshalling setup packet", |
| 583 | )) |
| 584 | return nil, err |
| 585 | } |
| 586 | |
| 587 | packet := Packet{ |
| 588 | Type: PACKET_SETUP, |
| 589 | Payload: mar, |
| 590 | } |
| 591 | err = c.writePacket(&packet) |
| 592 | if err != nil { |
| 593 | return nil, err |
| 594 | } |
| 595 | |
| 596 | resp := Packet{} |
| 597 | err = c.decoder.Decode(&resp) |
| 598 | if err != nil { |
| 599 | return nil, err |
| 600 | } |
| 601 | if resp.Type == PACKET_ERROR { |
| 602 | return nil, fmt.Errorf("received error packet from client") |
| 603 | } else if resp.Type != PACKET_SUCCESS { |
| 604 | return nil, fmt.Errorf("received invalid packet from client") |
| 605 | } |
| 606 | |
| 607 | go c.handleBackend() |
| 608 | |
| 609 | return c.connectionChannel, nil |
| 610 | } |
| 611 | |
| 612 | func (c *ForwardCtx) startReverseForwardingClient(setupPacket SetupPacket) (chan *Connection, error) { |
| 613 | c.init() |
no test coverage detected