X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Fmeshlink.c;h=e4061f93de6194c73f071c44eb452b81ee14fd45;hb=0334735f0ff7fc3fc004aaf91e8a19b9709f7289;hp=e5ff36f03452c5e94a0039a7e80b15c0fbe32005;hpb=f2b21858a8e77663a02c2d586b21c5568fb435a0;p=meshlink diff --git a/src/meshlink.c b/src/meshlink.c index e5ff36f0..e4061f93 100644 --- a/src/meshlink.c +++ b/src/meshlink.c @@ -783,12 +783,15 @@ meshlink_handle_t *meshlink_open(const char *confbase, const char *name) { if(access(filename, R_OK)) { if(errno == ENOENT) { // If not, create it - if(!meshlink_setup(mesh)) + if(!meshlink_setup(mesh)) { // meshlink_errno is set by meshlink_setup() return NULL; + } } else { fprintf(stderr, "Cannot not read from %s: %s\n", filename, strerror(errno)); - return meshlink_close(mesh), NULL; + meshlink_close(mesh); + meshlink_errno = MESHLINK_ESTORAGE; + return NULL; } } @@ -796,8 +799,11 @@ meshlink_handle_t *meshlink_open(const char *confbase, const char *name) { init_configuration(&mesh->config); - if(!read_server_config(mesh)) - return meshlink_close(mesh), NULL; + if(!read_server_config(mesh)) { + meshlink_close(mesh); + meshlink_errno = MESHLINK_ESTORAGE; + return NULL; + }; #ifdef HAVE_MINGW struct WSAData wsa_state; @@ -807,8 +813,11 @@ meshlink_handle_t *meshlink_open(const char *confbase, const char *name) { // Setup up everything // TODO: we should not open listening sockets yet - if(!setup_network(mesh)) - return meshlink_close(mesh), NULL; + if(!setup_network(mesh)) { + meshlink_close(mesh); + meshlink_errno = MESHLINK_ENETWORK; + return NULL; + } return mesh; }