From f4d24a1f72488ba990bf8412a37c9a735526610e Mon Sep 17 00:00:00 2001 From: Zack Scholl Date: Tue, 30 Apr 2019 12:46:35 -0600 Subject: [PATCH] update --- src/croc/croc.go | 48 ++++++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/src/croc/croc.go b/src/croc/croc.go index 7e4022d9..3a50b46f 100644 --- a/src/croc/croc.go +++ b/src/croc/croc.go @@ -123,8 +123,7 @@ func New(ops Options) (c *Client, err error) { Debug(c.Options.Debug) log.Debugf("options: %+v", c.Options) - c.conn = make([]*comm.Comm, len(c.Options.RelayPorts)) - + c.conn = make([]*comm.Comm, 16) // use default key (no encryption, until PAKE succeeds) c.Key, err = crypt.New(nil, nil) @@ -158,34 +157,30 @@ func (c *Client) Send(options TransferOptions) (err error) { go func() { discoveries, err := peerdiscovery.Discover(peerdiscovery.Settings{ Limit: 1, - Payload: []byte(c.Options.RelayPorts[0]), + Payload: []byte("9009"), Delay: 10 * time.Millisecond, TimeLimit: 30 * time.Second, }) fmt.Println(discoveries, err) }() - return -} - -func (c *Client) send(address string) (err error) - // connect to the relay for messaging - log.Debug("establishing connection") - c.conn[0], err = tcp.ConnectToTCPServer(c.Options.RelayAddress, c.Options.SharedSecret) - if err != nil { - err = errors.Wrap(err, fmt.Sprintf("could not connect to %s:%s", c.Options.RelayAddress, c.Options.RelayPorts[0])) - return - } - log.Debugf("connection established: %+v", c.conn[0]) - if c.Options.IsSender { - fmt.Println(c.conn[0].Receive()) - } else { - c.conn[0].Send([]byte("hello")) - } - log.Debug("exchanged header message") + errchan := make(chan error, 1) - return c.transfer(options) + go func() { + log.Debug("establishing connection") + c.conn[0], err = tcp.ConnectToTCPServer(c.Options.RelayAddress, c.Options.SharedSecret) + if err != nil { + err = errors.Wrap(err, fmt.Sprintf("could not connect to %s", c.Options.RelayAddress)) + return + } + log.Debugf("connection established: %+v", c.conn[0]) + fmt.Println(c.conn[0].Receive()) + log.Debug("exchanged header message") + errchan <- c.transfer(options) + }() + + return <-errchan } // Receive will receive a file @@ -199,6 +194,15 @@ func (c *Client) Receive() (err error) { //}) //fmt.Println(discoveries) //fmt.Println(err) + log.Debug("establishing connection") + c.conn[0], err = tcp.ConnectToTCPServer(c.Options.RelayAddress, c.Options.SharedSecret) + if err != nil { + err = errors.Wrap(err, fmt.Sprintf("could not connect to %s", c.Options.RelayAddress)) + return + } + log.Debugf("connection established: %+v", c.conn[0]) + c.conn[0].Send([]byte("handshake")) + log.Debug("exchanged header message") return c.transfer(TransferOptions{}) }