Avoid exceptions
This commit is contained in:
24
src/main.cpp
24
src/main.cpp
@@ -37,7 +37,7 @@ std::vector<int> create_listen_sockets(const weaseldb::Config &config) {
|
||||
int sfd = socket(AF_UNIX, SOCK_STREAM, 0);
|
||||
if (sfd == -1) {
|
||||
perror("socket");
|
||||
throw std::runtime_error("Failed to create unix socket");
|
||||
std::abort();
|
||||
}
|
||||
|
||||
// Remove existing socket file if it exists
|
||||
@@ -49,7 +49,8 @@ std::vector<int> create_listen_sockets(const weaseldb::Config &config) {
|
||||
|
||||
if (config.server.unix_socket_path.length() >= sizeof(addr.sun_path)) {
|
||||
close(sfd);
|
||||
throw std::runtime_error("Unix socket path too long");
|
||||
std::fprintf(stderr, "Unix socket path too long\n");
|
||||
std::abort();
|
||||
}
|
||||
|
||||
strncpy(addr.sun_path, config.server.unix_socket_path.c_str(),
|
||||
@@ -58,13 +59,13 @@ std::vector<int> create_listen_sockets(const weaseldb::Config &config) {
|
||||
if (bind(sfd, (struct sockaddr *)&addr, sizeof(addr)) == -1) {
|
||||
perror("bind");
|
||||
close(sfd);
|
||||
throw std::runtime_error("Failed to bind unix socket");
|
||||
std::abort();
|
||||
}
|
||||
|
||||
if (listen(sfd, SOMAXCONN) == -1) {
|
||||
perror("listen");
|
||||
close(sfd);
|
||||
throw std::runtime_error("Failed to listen on unix socket");
|
||||
std::abort();
|
||||
}
|
||||
|
||||
listen_fds.push_back(sfd);
|
||||
@@ -89,7 +90,7 @@ std::vector<int> create_listen_sockets(const weaseldb::Config &config) {
|
||||
std::to_string(config.server.port).c_str(), &hints, &result);
|
||||
if (s != 0) {
|
||||
fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(s));
|
||||
throw std::runtime_error("Failed to resolve bind address");
|
||||
std::abort();
|
||||
}
|
||||
|
||||
int sfd = -1;
|
||||
@@ -126,13 +127,14 @@ std::vector<int> create_listen_sockets(const weaseldb::Config &config) {
|
||||
freeaddrinfo(result);
|
||||
|
||||
if (rp == nullptr || sfd == -1) {
|
||||
throw std::runtime_error("Could not bind to any address");
|
||||
std::fprintf(stderr, "Could not bind to any address\n");
|
||||
std::abort();
|
||||
}
|
||||
|
||||
if (listen(sfd, SOMAXCONN) == -1) {
|
||||
perror("listen");
|
||||
close(sfd);
|
||||
throw std::runtime_error("Failed to listen on socket");
|
||||
std::abort();
|
||||
}
|
||||
|
||||
listen_fds.push_back(sfd);
|
||||
@@ -236,13 +238,7 @@ int main(int argc, char *argv[]) {
|
||||
<< std::endl;
|
||||
|
||||
// Create listen sockets
|
||||
std::vector<int> listen_fds;
|
||||
try {
|
||||
listen_fds = create_listen_sockets(*config);
|
||||
} catch (const std::exception &e) {
|
||||
std::cerr << "Failed to create listen sockets: " << e.what() << std::endl;
|
||||
return 1;
|
||||
}
|
||||
std::vector<int> listen_fds = create_listen_sockets(*config);
|
||||
|
||||
// Create handler and server
|
||||
HttpHandler http_handler;
|
||||
|
||||
Reference in New Issue
Block a user