mirror of https://github.com/schollz/croc.git
recipient use public OR local
This commit is contained in:
parent
cd3a936795
commit
82315ca413
|
@ -1,6 +1,7 @@
|
|||
package croc
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"os"
|
||||
"os/signal"
|
||||
|
@ -68,22 +69,9 @@ func (c *Croc) Send(fname, codephrase string) (err error) {
|
|||
// Receive the file
|
||||
func (c *Croc) Receive(codephrase string) (err error) {
|
||||
log.Debug("receiving")
|
||||
waitingFor := 2
|
||||
errChan := make(chan error)
|
||||
|
||||
// use public relay
|
||||
if !c.LocalOnly {
|
||||
go func() {
|
||||
// atttempt to connect to public relay
|
||||
errChan <- c.sendReceive(c.WebsocketAddress, "", codephrase, false)
|
||||
}()
|
||||
} else {
|
||||
waitingFor = 1
|
||||
}
|
||||
|
||||
// use local relay
|
||||
// use local relay first
|
||||
if !c.NoLocal {
|
||||
go func() {
|
||||
// try to discovery codephrase and server through peer network
|
||||
discovered, errDiscover := peerdiscovery.Discover(peerdiscovery.Settings{
|
||||
Limit: 1,
|
||||
|
@ -96,22 +84,18 @@ func (c *Croc) Receive(codephrase string) (err error) {
|
|||
}
|
||||
if len(discovered) > 0 {
|
||||
log.Debugf("discovered %s:%s", discovered[0].Address, discovered[0].Payload)
|
||||
errChan <- c.sendReceive(fmt.Sprintf("ws://%s:%s", discovered[0].Address, discovered[0].Payload), "", codephrase, false)
|
||||
return c.sendReceive(fmt.Sprintf("ws://%s:%s", discovered[0].Address, discovered[0].Payload), "", codephrase, false)
|
||||
} else {
|
||||
log.Debug("discovered no peers")
|
||||
waitingFor = 1
|
||||
}
|
||||
}()
|
||||
} else {
|
||||
waitingFor = 1
|
||||
}
|
||||
|
||||
err = <-errChan
|
||||
if err == nil || waitingFor == 1 {
|
||||
return
|
||||
// use public relay
|
||||
if !c.LocalOnly {
|
||||
return c.sendReceive(c.WebsocketAddress, "", codephrase, false)
|
||||
}
|
||||
log.Debug(err)
|
||||
return <-errChan
|
||||
|
||||
return errors.New("must use local or public relay")
|
||||
}
|
||||
|
||||
func (c *Croc) sendReceive(websocketAddress, fname, codephrase string, isSender bool) (err error) {
|
||||
|
|
Loading…
Reference in New Issue