瀏覽代碼

Fix annoying EADDRINUSE when relaunching crown after a crash

Daniele Bartolini 12 年之前
父節點
當前提交
179bc9fdf6
共有 1 個文件被更改,包括 9 次插入0 次删除
  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);
 	}
 
+	//-----------------------------------------------------------------------------
+	void set_resuse_address(bool reuse)
+	{
+		int optval = (int) reuse;
+		setsockopt(m_socket, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval));
+	}
+
 public:
 
 	int m_socket;
@@ -250,6 +257,8 @@ public:
 		m_server.m_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
 		CE_ASSERT(m_server.m_socket > 0, "Failed to create socket");
 
+		m_server.set_resuse_address(true);
+
 		// Bind socket
 		sockaddr_in address;
 		address.sin_family = AF_INET;