From 5c057e9a7f4f8c55b1787a39a8b22b15fbd8b318 Mon Sep 17 00:00:00 2001
From: Jake Taylor <jake@elixxir.io>
Date: Tue, 9 Aug 2022 13:37:59 -0500
Subject: [PATCH] remove getHost

---
 ud/addFact.go     |  8 +-------
 ud/confirmFact.go |  8 +-------
 ud/manager.go     | 51 -----------------------------------------------
 ud/register.go    | 10 +---------
 ud/remove.go      | 16 ++-------------
 ud/ud.go          |  2 ++
 ud/utils_test.go  |  6 +++++-
 7 files changed, 12 insertions(+), 89 deletions(-)

diff --git a/ud/addFact.go b/ud/addFact.go
index 3cb960518..719e7d137 100644
--- a/ud/addFact.go
+++ b/ud/addFact.go
@@ -30,12 +30,6 @@ func (m *Manager) SendRegisterFact(f fact.Fact) (string, error) {
 func (m *Manager) addFact(inFact fact.Fact, myId *id.ID,
 	aFC addFactComms) (string, error) {
 
-	// get UD host
-	udHost, err := m.getHost()
-	if err != nil {
-		return "", err
-	}
-
 	// Create a primitives Fact so we can hash it
 	f, err := fact.NewFact(inFact.T, inFact.Fact)
 	if err != nil {
@@ -68,7 +62,7 @@ func (m *Manager) addFact(inFact fact.Fact, myId *id.ID,
 	}
 
 	// Send the message
-	response, err := aFC.SendRegisterFact(udHost, &remFactMsg)
+	response, err := aFC.SendRegisterFact(m.ud.host, &remFactMsg)
 
 	confirmationID := ""
 	if response != nil {
diff --git a/ud/confirmFact.go b/ud/confirmFact.go
index 7ad5ddcc7..a55da3756 100644
--- a/ud/confirmFact.go
+++ b/ud/confirmFact.go
@@ -19,17 +19,11 @@ func (m *Manager) ConfirmFact(confirmationID, code string) error {
 
 // confirmFact is a helper function for ConfirmFact.
 func (m *Manager) confirmFact(confirmationID, code string, comm confirmFactComm) error {
-	// get UD host
-	udHost, err := m.getHost()
-	if err != nil {
-		return err
-	}
-
 	msg := &pb.FactConfirmRequest{
 		ConfirmationID: confirmationID,
 		Code:           code,
 	}
-	_, err = comm.SendConfirmFact(udHost, msg)
+	_, err := comm.SendConfirmFact(m.ud.host, msg)
 	if err != nil {
 		return err
 	}
diff --git a/ud/manager.go b/ud/manager.go
index 33b2f3b3a..cd937f041 100644
--- a/ud/manager.go
+++ b/ud/manager.go
@@ -10,10 +10,8 @@ import (
 	"gitlab.com/elixxir/crypto/contact"
 	"gitlab.com/elixxir/crypto/fastRNG"
 	"gitlab.com/elixxir/primitives/fact"
-	"gitlab.com/xx_network/comms/connect"
 	"gitlab.com/xx_network/primitives/id"
 	"sync"
-	"time"
 )
 
 // Manager is the control structure for the contacting the user discovery service.
@@ -154,13 +152,6 @@ func NewManagerFromBackup(user udE2e, comms Comms, follower udNetworkStatus,
 		return nil, err
 	}
 
-	// Create the user discovery host object
-	_, err = m.getHost()
-	if err != nil {
-		return nil, errors.WithMessage(err, "User Discovery host object could "+
-			"not be constructed.")
-	}
-
 	return m, nil
 }
 
@@ -240,48 +231,6 @@ func (m *Manager) GetContact() (contact.Contact, error) {
 
 }
 
-// getHost returns the current UD host.
-func (m *Manager) getHost() (*connect.Host, error) {
-	// Return User discovery service if it has been set
-	if m.ud != nil {
-		return m.ud.host, nil
-	}
-
-	// Otherwise construct one (this should be for testing purposes only)
-	netDef := m.getCmix().GetInstance().GetPartialNdf().Get()
-	if netDef.UDB.Cert == "" {
-		return nil, errors.New("NDF does not have User Discovery information, " +
-			"is there network access?: Cert not present.")
-	}
-
-	// Unmarshal UD ID from the NDF
-	udID, err := id.Unmarshal(netDef.UDB.ID)
-	if err != nil {
-		return nil, errors.Errorf("failed to "+
-			"unmarshal UD ID from NDF: %+v", err)
-	}
-
-	// Return the host, if it exists
-	host, exists := m.comms.GetHost(udID)
-	if exists {
-		return host, nil
-	}
-
-	params := connect.GetDefaultHostParams()
-	params.AuthEnabled = false
-	params.SendTimeout = 20 * time.Second
-
-	// Add a new host and return it if it does not already exist
-	host, err = m.comms.AddHost(udID, netDef.UDB.Address,
-		[]byte(netDef.UDB.Cert), params)
-	if err != nil {
-		return nil, errors.WithMessage(err, "User Discovery host "+
-			"object could not be constructed.")
-	}
-
-	return host, nil
-}
-
 // loadOrNewManager is a helper function which loads from storage or
 // creates a new Manager object.
 func loadOrNewManager(user udE2e, comms Comms,
diff --git a/ud/register.go b/ud/register.go
index 8ec2914d6..495d50da5 100644
--- a/ud/register.go
+++ b/ud/register.go
@@ -17,14 +17,6 @@ import (
 func (m *Manager) register(username string, networkSignature []byte,
 	rng csprng.Source, comm registerUserComms) error {
 
-	// Initialize or get host
-	udHost, err := m.getHost()
-	if err != nil {
-		return errors.WithMessage(err,
-			"User Discovery host object could "+
-				"not be constructed.")
-	}
-
 	// Retrieve data used for registration
 	identity := m.user.GetReceptionIdentity()
 	privKey, err := identity.GetRSAPrivatePem()
@@ -86,7 +78,7 @@ func (m *Manager) register(username string, networkSignature []byte,
 	}
 
 	// Register user with user discovery
-	_, err = comm.SendRegisterUser(udHost, msg)
+	_, err = comm.SendRegisterUser(m.ud.host, msg)
 	if err != nil {
 		return err
 	}
diff --git a/ud/remove.go b/ud/remove.go
index 0972b7e77..ebb809c00 100644
--- a/ud/remove.go
+++ b/ud/remove.go
@@ -28,12 +28,6 @@ func (m *Manager) RemoveFact(f fact.Fact) error {
 func (m *Manager) removeFact(f fact.Fact,
 	rFC removeFactComms) error {
 
-	// Get UD host
-	udHost, err := m.getHost()
-	if err != nil {
-		return err
-	}
-
 	// Construct the message to send
 	// Convert our Fact to a mixmessages Fact for sending
 	mmFact := mixmessages.Fact{
@@ -65,7 +59,7 @@ func (m *Manager) removeFact(f fact.Fact,
 	}
 
 	// Send the message
-	_, err = rFC.SendRemoveFact(udHost, &remFactMsg)
+	_, err = rFC.SendRemoveFact(m.ud.host, &remFactMsg)
 	if err != nil {
 		return err
 	}
@@ -83,19 +77,13 @@ func (m *Manager) PermanentDeleteAccount(f fact.Fact) error {
 		return errors.New(fmt.Sprintf("PermanentDeleteAccount must only remove "+
 			"a username. Cannot remove fact %q", f.Fact))
 	}
-
-	udHost, err := m.getHost()
-	if err != nil {
-		return err
-	}
-
 	identity := m.user.GetReceptionIdentity()
 	privKey, err := identity.GetRSAPrivatePem()
 	if err != nil {
 		return err
 	}
 
-	return m.permanentDeleteAccount(f, identity.ID, privKey, m.comms, udHost)
+	return m.permanentDeleteAccount(f, identity.ID, privKey, m.comms, m.ud.host)
 }
 
 // permanentDeleteAccount is a helper function for PermanentDeleteAccount.
diff --git a/ud/ud.go b/ud/ud.go
index 9f4ec1b48..5fb27e619 100644
--- a/ud/ud.go
+++ b/ud/ud.go
@@ -5,6 +5,7 @@ import (
 	"gitlab.com/elixxir/crypto/contact"
 	"gitlab.com/xx_network/comms/connect"
 	"gitlab.com/xx_network/primitives/id"
+	"time"
 )
 
 // userDiscovery is the user discovery's contact information.
@@ -20,6 +21,7 @@ func (m *Manager) setUserDiscovery(cert,
 	contactFile []byte, address string) error {
 	params := connect.GetDefaultHostParams()
 	params.AuthEnabled = false
+	params.SendTimeout = 20 * time.Second
 
 	udIdBytes, dhPubKeyBytes, err := contact.ReadContactFromFile(contactFile)
 	if err != nil {
diff --git a/ud/utils_test.go b/ud/utils_test.go
index c4082605b..7463081d6 100644
--- a/ud/utils_test.go
+++ b/ud/utils_test.go
@@ -84,7 +84,7 @@ func newTestManager(t *testing.T) (*Manager, *testNetworkManager) {
 	params.SendTimeout = 20 * time.Second
 
 	// Add a new host and return it if it does not already exist
-	_, err = m.comms.AddHost(udID, netDef.UDB.Address,
+	host, err := m.comms.AddHost(udID, netDef.UDB.Address,
 		[]byte(netDef.UDB.Cert), params)
 	if err != nil {
 		t.Fatalf("User Discovery host " +
@@ -95,6 +95,10 @@ func newTestManager(t *testing.T) (*Manager, *testNetworkManager) {
 	if err != nil {
 		t.Fatalf("Failed to get contact: %v", err)
 	}
+	m.ud = &userDiscovery{
+		host:    host,
+		contact: udContact,
+	}
 
 	tnm.c = udContact
 
-- 
GitLab