Просмотр исходного кода

Fix annoying EADDRINUSE when relaunching crown after a crash

Daniele Bartolini 12 лет назад
Родитель
Сommit
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;