From: Christian Grothoff Date: Mon, 16 Nov 2009 14:33:38 +0000 (+0000) Subject: proper error handling X-Git-Tag: initial-import-from-subversion-38251~23056 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=689b3d243c3cc49551f9f9ecbc2b046021a48e16;p=oweals%2Fgnunet.git proper error handling --- diff --git a/src/util/pseudonym.c b/src/util/pseudonym.c index 67bca2e4a..3bc8137fe 100644 --- a/src/util/pseudonym.c +++ b/src/util/pseudonym.c @@ -177,19 +177,29 @@ write_pseudonym_info (const struct GNUNET_CONFIGURATION_Handle *cfg, int32_t ranking, const char *ns_name) { char *fn; - int ret; + struct GNUNET_BIO_WriteHandle *fileW; + fn = get_data_filename (cfg, PS_METADATA_DIR, nsid); GNUNET_assert (fn != NULL); - struct GNUNET_BIO_WriteHandle *fileW; fileW = GNUNET_BIO_write_open(fn); - if((NULL != fileW)&& - (GNUNET_OK == GNUNET_BIO_write_int32(fileW, ranking))&& - (GNUNET_OK == GNUNET_BIO_write_string(fileW, ns_name))&& - (GNUNET_OK == GNUNET_BIO_write_meta_data(fileW, meta))&& - (GNUNET_OK == GNUNET_BIO_write_close(fileW))) - ret = GNUNET_OK; - else - ret = GNUNET_SYSERR; + if (NULL != fileW) + { + if ( (GNUNET_OK != GNUNET_BIO_write_int32(fileW, ranking)) || + (GNUNET_OK != GNUNET_BIO_write_string(fileW, ns_name)) || + (GNUNET_OK != GNUNET_BIO_write_meta_data(fileW, meta)) ) + { + GNUNET_BIO_write_close(fileW); + GNUNET_break (GNUNET_OK == GNUNET_DISK_directory_remove (fileW)); + GNUNET_free (fn); + return; + } + if (GNUNET_OK != GNUNET_BIO_write_close(fileW)) + { + GNUNET_break (GNUNET_OK == GNUNET_DISK_directory_remove (fileW)); + GNUNET_free (fn); + return; + } + } GNUNET_free (fn); /* create entry for pseudonym name in names */ GNUNET_free_non_null (GNUNET_PSEUDONYM_id_to_name (cfg, nsid));