From f8505caa27f9282581f77f1b8c17d7dfd13dd19d Mon Sep 17 00:00:00 2001 From: Zack Scholl Date: Sun, 22 Oct 2017 10:36:44 -0600 Subject: [PATCH] Delete receiver key if sender is not present and not waiting Fixes #39 --- connect.go | 4 +++- relay.go | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/connect.go b/connect.go index 133a983d..ea0aad14 100644 --- a/connect.go +++ b/connect.go @@ -253,8 +253,10 @@ func (c *Connection) runClient() error { } else { logger.Debugf("telling relay: %s", "r."+c.Code) if c.Wait { + // tell server to wait for sender sendMessage("r."+c.HashedCode+".0.0.0", connection) } else { + // tell server to cancel if sender doesn't exist sendMessage("c."+c.HashedCode+".0.0.0", connection) } } @@ -371,7 +373,7 @@ func (c *Connection) runClient() error { fmt.Println("\nFile sent.") } else { // Is a Receiver if notPresent { - fmt.Println("Sender/Code not present") + fmt.Println("Sender is not ready. Use -wait to wait until sender connects.") return nil } if !gotOK { diff --git a/relay.go b/relay.go index 2ba0a20d..f5435ea6 100644 --- a/relay.go +++ b/relay.go @@ -205,6 +205,10 @@ func (r *Relay) clientCommuncation(id int, connection net.Conn) { r.connections.RUnlock() if connectionType == "c" { sendMessage("0-0-0-0.0.0.0", connection) + // sender is not ready so delete connection + r.connections.Lock() + delete(r.connections.potentialReceivers, key) + r.connections.Unlock() return } time.Sleep(100 * time.Millisecond)