X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=client_common.c;h=eb9f9e1fcda2a49ba960582ba67be9c882897a20;hp=d3a9ede1f0e1d5b7238a387f0f3aa03650deed55;hb=c0abcee0da53a6b399c3d16a62830aaa9ae21349;hpb=32e646780461f96682d1191d31e08e4602ab125e diff --git a/client_common.c b/client_common.c index d3a9ede1..eb9f9e1f 100644 --- a/client_common.c +++ b/client_common.c @@ -44,6 +44,7 @@ void client_close(struct client_task *ct) free(ct->user); free(ct->config_file); free(ct->key_file); + btr_free_node(ct->btrn); client_cmdline_parser_free(&ct->conf); free(ct); } @@ -394,9 +395,16 @@ int client_open(int argc, char *argv[], struct client_task **ct_ptr, ct->user = ct->conf.user_given? para_strdup(ct->conf.user_arg) : para_logname(); - ct->key_file = ct->conf.key_file_given? - para_strdup(ct->conf.key_file_arg) : - make_message("%s/.paraslash/key.%s", home, ct->user); + if (ct->conf.key_file_given) + ct->key_file = para_strdup(ct->conf.key_file_arg); + else { + ct->key_file = make_message("%s/.paraslash/key.%s", + home, ct->user); + if (!file_exists(ct->key_file)) { + free(ct->key_file); + ct->key_file = make_message("%s/.ssh/id_rsa", home); + } + } if (loglevel) *loglevel = get_loglevel_by_name(ct->conf.loglevel_arg); @@ -411,7 +419,6 @@ out: if (ret < 0) { PARA_ERROR_LOG("%s\n", para_strerror(-ret)); btr_remove_node(ct->btrn); - btr_free_node(ct->btrn); client_close(ct); *ct_ptr = NULL; }