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