Browse Source

Fix annoying EADDRINUSE when relaunching crown after a crash

Daniele Bartolini 12 năm trước cách đây
mục cha
commit
179bc9fdf6
1 tập tin đã thay đổi với 9 bổ sung0 xóa
  1. 9 0
      engine/os/posix/OsSocket.h

+ 9 - 0
engine/os/posix/OsSocket.h

@@ -235,6 +235,13 @@ public:
 		fcntl(m_socket, F_SETFL, blocking ? (flags & ~O_NONBLOCK) : O_NONBLOCK);
 		fcntl(m_socket, F_SETFL, blocking ? (flags & ~O_NONBLOCK) : O_NONBLOCK);
 	}
 	}
 
 
+	//-----------------------------------------------------------------------------
+	void set_resuse_address(bool reuse)
+	{
+		int optval = (int) reuse;
+		setsockopt(m_socket, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval));
+	}
+
 public:
 public:
 
 
 	int m_socket;
 	int m_socket;
@@ -250,6 +257,8 @@ public:
 		m_server.m_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
 		m_server.m_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
 		CE_ASSERT(m_server.m_socket > 0, "Failed to create socket");
 		CE_ASSERT(m_server.m_socket > 0, "Failed to create socket");
 
 
+		m_server.set_resuse_address(true);
+
 		// Bind socket
 		// Bind socket
 		sockaddr_in address;
 		sockaddr_in address;
 		address.sin_family = AF_INET;
 		address.sin_family = AF_INET;