event/ServerSocket: migrate from class Error to C++ exceptions
This commit is contained in:
@@ -26,41 +26,35 @@
|
||||
int
|
||||
socket_bind_listen(int domain, int type, int protocol,
|
||||
SocketAddress address,
|
||||
int backlog,
|
||||
Error &error)
|
||||
int backlog)
|
||||
{
|
||||
int fd, ret;
|
||||
const int reuse = 1;
|
||||
|
||||
fd = socket_cloexec_nonblock(domain, type, protocol);
|
||||
if (fd < 0) {
|
||||
SetSocketError(error);
|
||||
error.AddPrefix("Failed to create socket: ");
|
||||
return -1;
|
||||
}
|
||||
if (fd < 0)
|
||||
throw MakeSocketError("Failed to create socket");
|
||||
|
||||
ret = setsockopt(fd, SOL_SOCKET, SO_REUSEADDR,
|
||||
(const char *) &reuse, sizeof(reuse));
|
||||
if (ret < 0) {
|
||||
SetSocketError(error);
|
||||
error.AddPrefix("setsockopt() failed: ");
|
||||
auto error = GetSocketError();
|
||||
close_socket(fd);
|
||||
return -1;
|
||||
throw MakeSocketError(error, "setsockopt() failed");
|
||||
}
|
||||
|
||||
ret = bind(fd, address.GetAddress(), address.GetSize());
|
||||
if (ret < 0) {
|
||||
SetSocketError(error);
|
||||
auto error = GetSocketError();
|
||||
close_socket(fd);
|
||||
return -1;
|
||||
throw MakeSocketError(error, "Failed to bind socket");
|
||||
}
|
||||
|
||||
ret = listen(fd, backlog);
|
||||
if (ret < 0) {
|
||||
SetSocketError(error);
|
||||
error.AddPrefix("listen() failed: ");
|
||||
auto error = GetSocketError();
|
||||
close_socket(fd);
|
||||
return -1;
|
||||
throw MakeSocketError(error, "Failed to listen on socket");
|
||||
}
|
||||
|
||||
#if defined(HAVE_STRUCT_UCRED) && defined(SO_PASSCRED)
|
||||
|
||||
Reference in New Issue
Block a user