Skip to content
Snippets Groups Projects
Commit fada8d06 authored by Adrien Béraud's avatar Adrien Béraud
Browse files

c: handle exception during initialization

parent 90022ee3
No related branches found
No related tags found
No related merge requests found
...@@ -265,13 +265,19 @@ void dht_runner_delete(dht_runner* runner) { ...@@ -265,13 +265,19 @@ void dht_runner_delete(dht_runner* runner) {
delete reinterpret_cast<dht::DhtRunner*>(runner); delete reinterpret_cast<dht::DhtRunner*>(runner);
} }
void dht_runner_run(dht_runner* r, in_port_t port) { int dht_runner_run(dht_runner* r, in_port_t port) {
auto runner = reinterpret_cast<dht::DhtRunner*>(r); auto runner = reinterpret_cast<dht::DhtRunner*>(r);
try {
runner->run(port, {}, true); runner->run(port, {}, true);
} catch(...) {
return ENOTCONN;
}
return 0;
} }
void dht_runner_run_config(dht_runner* r, in_port_t port, const dht_runner_config* conf) { int dht_runner_run_config(dht_runner* r, in_port_t port, const dht_runner_config* conf) {
auto runner = reinterpret_cast<dht::DhtRunner*>(r); auto runner = reinterpret_cast<dht::DhtRunner*>(r);
try {
dht::DhtRunner::Config config; dht::DhtRunner::Config config;
config.dht_config.node_config.is_bootstrap = conf->dht_config.node_config.is_bootstrap; config.dht_config.node_config.is_bootstrap = conf->dht_config.node_config.is_bootstrap;
config.dht_config.node_config.maintain_storage = conf->dht_config.node_config.maintain_storage; config.dht_config.node_config.maintain_storage = conf->dht_config.node_config.maintain_storage;
...@@ -293,6 +299,10 @@ void dht_runner_run_config(dht_runner* r, in_port_t port, const dht_runner_confi ...@@ -293,6 +299,10 @@ void dht_runner_run_config(dht_runner* r, in_port_t port, const dht_runner_confi
config.peer_discovery = conf->peer_discovery; config.peer_discovery = conf->peer_discovery;
config.peer_publish = conf->peer_publish; config.peer_publish = conf->peer_publish;
runner->run(port, config); runner->run(port, config);
} catch(...) {
return ENOTCONN;
}
return 0;
} }
void dht_runner_ping(dht_runner* r, struct sockaddr* addr, socklen_t addr_len) { void dht_runner_ping(dht_runner* r, struct sockaddr* addr, socklen_t addr_len) {
......
...@@ -137,8 +137,10 @@ struct OPENDHT_C_PUBLIC dht_runner; ...@@ -137,8 +137,10 @@ struct OPENDHT_C_PUBLIC dht_runner;
typedef struct dht_runner dht_runner; typedef struct dht_runner dht_runner;
OPENDHT_C_PUBLIC dht_runner* dht_runner_new(void); OPENDHT_C_PUBLIC dht_runner* dht_runner_new(void);
OPENDHT_C_PUBLIC void dht_runner_delete(dht_runner* runner); OPENDHT_C_PUBLIC void dht_runner_delete(dht_runner* runner);
OPENDHT_C_PUBLIC void dht_runner_run(dht_runner* runner, in_port_t port); /* Returns 0 on success, standard error code on failure */
OPENDHT_C_PUBLIC void dht_runner_run_config(dht_runner* runner, in_port_t port, const dht_runner_config* config); OPENDHT_C_PUBLIC int dht_runner_run(dht_runner* runner, in_port_t port);
/* Returns 0 on success, standard error code on failure */
OPENDHT_C_PUBLIC int dht_runner_run_config(dht_runner* runner, in_port_t port, const dht_runner_config* config);
OPENDHT_C_PUBLIC void dht_runner_ping(dht_runner* runner, struct sockaddr* addr, socklen_t addr_len); OPENDHT_C_PUBLIC void dht_runner_ping(dht_runner* runner, struct sockaddr* addr, socklen_t addr_len);
OPENDHT_C_PUBLIC void dht_runner_bootstrap(dht_runner* runner, const char* host, const char* service); OPENDHT_C_PUBLIC void dht_runner_bootstrap(dht_runner* runner, const char* host, const char* service);
OPENDHT_C_PUBLIC void dht_runner_get(dht_runner* runner, const dht_infohash* hash, dht_get_cb cb, dht_done_cb done_cb, void* cb_user_data); OPENDHT_C_PUBLIC void dht_runner_get(dht_runner* runner, const dht_infohash* hash, dht_get_cb cb, dht_done_cb done_cb, void* cb_user_data);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment