From a857c6a88f095afdd63bc997174dfd89b4e56897 Mon Sep 17 00:00:00 2001
From: mpc <mpc>
Date: Fri, 23 Jul 2004 00:10:59 +0000
Subject: [PATCH] *** empty log message ***

---
 .../enclave/libsockthread/src/socket_addr.cpp | 37 +++++++++++++++++--
 .../enclave/libsockthread/src/socket_addr.hpp | 12 +++---
 2 files changed, 41 insertions(+), 8 deletions(-)

diff --git a/apps/enclave/libsockthread/src/socket_addr.cpp b/apps/enclave/libsockthread/src/socket_addr.cpp
index 4e2d51ee51..53f5167d70 100644
--- a/apps/enclave/libsockthread/src/socket_addr.cpp
+++ b/apps/enclave/libsockthread/src/socket_addr.cpp
@@ -27,7 +27,7 @@
  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $Id$
+ * $Id: socket_addr.cpp,v 1.3 2004/07/22 03:54:01 mpc Exp $
  */
 
 #include "platform.hpp"
@@ -35,12 +35,27 @@
 #include "socket_addr.hpp"
 using namespace Libsockthread;
 
+Socket_addr::Socket_addr(Socket_addr& rhs)
+{
+	delete[] ip;
+	if (rhs.domain == AF_INET) {
+		ip = new char[INET_ADDRSTRLEN];
+	else
+		ip = new char[INET6_ADDRSTRLEN];
+	domain = rhs.domain;
+	host = rhs.host;
+	strcpy(ip, rhs.ip);
+	port = rhs.port;
+	type = rhs.type;
+}
+
 Socket_addr& Socket_addr::operator=(const Socket_addr& rhs)
 {
-	if (this == &rhs) // check for self-assignment: a = a
+	if (this == &rhs)  // check for self-assignment: a = a
 		return *this;
 
-	if (rhs.domain == AF_INET) {
+	delete[] ip;
+	if (rhs.domain == AF_INET)
 		ip = new char[INET_ADDRSTRLEN];
 	else
 		ip = new char[INET6_ADDRSTRLEN];
@@ -53,6 +68,9 @@ Socket_addr& Socket_addr::operator=(const Socket_addr& rhs)
 	return *this;
 }
 
+/*
+ * Performs a DNS lookup
+ */
 void Socket_addr::resolve()
 {
 	hostent* hent = gethostbyname(host.c_str());
@@ -60,9 +78,22 @@ void Socket_addr::resolve()
 		throw Socket_error(hstrerror(h_errno));
 	assert(hent->h_addrtype == AF_INET || hent->h_addrtype == AF_INET6);
 	domain = hent->h_addrtype;
+	delete[] ip;
 	if (domain == AF_INET) {
 		ip = new char[INET_ADDRSTRLEN];
 	else
 		ip = new char[INET6_ADDRSTRLEN];
 	strcpy(ip, hent->h_addr_list[0]);
 }
+
+bool Socket_addr::operator==(const Socket_addr& rhs)
+{
+	if (rhs.domain == domain
+			&& rhs.host == host
+			&& strcmp(rhs.ip, ip) == 0
+			&& rhs.port == port
+			&& rhs.type == type)
+		return true;
+	else
+		return false;
+}
diff --git a/apps/enclave/libsockthread/src/socket_addr.hpp b/apps/enclave/libsockthread/src/socket_addr.hpp
index 6a2b9e4140..0fa769a75a 100644
--- a/apps/enclave/libsockthread/src/socket_addr.hpp
+++ b/apps/enclave/libsockthread/src/socket_addr.hpp
@@ -27,7 +27,7 @@
  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $Id$
+ * $Id: socket_addr.hpp,v 1.3 2004/07/22 03:54:01 mpc Exp $
  */
 
 #ifndef LIBSOCKTHREAD_SOCKET_ADDR_HPP
@@ -36,21 +36,23 @@
 namespace Libsockthread {
 	class Socket_addr {
 		public:
+			Socket_addr(Socket_addr& rhs);
 			Socket_addr(int domain, int type, string& host, uint16_t port)
 				: domain(domain), host(host), type(type), port(port)
 				{ resolve(); }  // throws Socket_error
 			~Socket_addr()
 				{ delete[] ip; }
 
-			int get_domain() const  // Has nothing to do with DNS domain
-				{ return domain; }
+			int get_domain() const  // Has nothing to do with DNS domain -
+				{ return domain; }  // returns either AF_INET or AF_INET6
 			const char* get_ip() const  // Warning!  This can be NULL!
 				{ return ip; }
 			uint16_t get_port() const
 				{ return port; }
 			int get_type() const
 				{ return type;
-			Socket_addr& Socket_addr::operator=(const Socket_addr& rhs);
+			Socket_addr& operator=(const Socket_addr& rhs);
+			bool operator==(const Socket_addr& rhs);
 			void set_domain(int domain)
 				{ this->domain = domain; }
 			void set_host(string& host)  // throws Socket_error
@@ -60,7 +62,7 @@ namespace Libsockthread {
 			void set_type(int type)
 				{ this->type = type; }
 		private:
-			void resolve();
+			void resolve();  // throws Socket_error
 
 			int domain;
 			string host;
-- 
GitLab