Navigation


Changeset 447:097bae83b07a in freeDiameter


Ignore:
Timestamp:
Jul 29, 2010, 11:36:40 AM (14 years ago)
Author:
Sebastien Decugis <sdecugis@nict.go.jp>
Branch:
default
Phase:
public
Message:

Forgot to cleanup the configuration on exit, spotted by valgrind

Files:
5 edited

Legend:

Unmodified
Added
Removed
  • freeDiameter/apps.c

    r105 r447  
    136136        return 0;
    137137}
     138
     139/* Remove the apps from a list */
     140int fd_app_empty(struct fd_list * list)
     141{
     142        TRACE_ENTRY("%p", list);
     143        CHECK_PARAMS( list );
     144       
     145        while (!FD_IS_LIST_EMPTY(list)) {
     146                struct fd_list * li = list->next;
     147                fd_list_unlink(li);
     148                free(li);
     149        }
     150       
     151        return 0;
     152}
  • freeDiameter/config.c

    r403 r447  
    271271        return 0;
    272272}
     273
     274
     275/* Destroy contents of fd_g_config structure */
     276int fd_conf_deinit()
     277{
     278        TRACE_ENTRY();
     279       
     280        /* Free the TLS parameters */
     281        gnutls_priority_deinit(fd_g_config->cnf_sec_data.prio_cache);
     282        gnutls_dh_params_deinit(fd_g_config->cnf_sec_data.dh_cache);
     283        gnutls_certificate_free_credentials(fd_g_config->cnf_sec_data.credentials);
     284       
     285        free(fd_g_config->cnf_sec_data.cert_file); fd_g_config->cnf_sec_data.cert_file = NULL;
     286        free(fd_g_config->cnf_sec_data.key_file); fd_g_config->cnf_sec_data.key_file = NULL;
     287        free(fd_g_config->cnf_sec_data.ca_file); fd_g_config->cnf_sec_data.ca_file = NULL;
     288        free(fd_g_config->cnf_sec_data.crl_file); fd_g_config->cnf_sec_data.crl_file = NULL;
     289        free(fd_g_config->cnf_sec_data.prio_string); fd_g_config->cnf_sec_data.prio_string = NULL;
     290       
     291        /* Destroy dictionary */
     292        CHECK_FCT_DO( fd_dict_fini(&fd_g_config->cnf_dict), );
     293       
     294        /* Destroy the main event queue */
     295        CHECK_FCT_DO( fd_fifo_del(&fd_g_config->cnf_main_ev), );
     296       
     297        /* Destroy the local endpoints and applications */
     298        CHECK_FCT_DO(fd_ep_filter(&fd_g_config->cnf_endpoints, 0 ), );
     299        CHECK_FCT_DO(fd_app_empty(&fd_g_config->cnf_apps ), );
     300       
     301        /* Destroy the local identity */       
     302        free(fd_g_config->cnf_diamid); fd_g_config->cnf_diamid = NULL;
     303        free(fd_g_config->cnf_diamrlm); fd_g_config->cnf_diamrlm = NULL;
     304       
     305        return 0;
     306}
     307
     308
  • freeDiameter/fD.h

    r403 r447  
    8080/* Configuration */
    8181int fd_conf_init();
     82int fd_conf_deinit();
    8283void fd_conf_dump();
    8384int fd_conf_parse();
  • freeDiameter/main.c

    r335 r447  
    170170        GNUTLS_TRACE( gnutls_global_deinit() );
    171171       
     172        CHECK_FCT_DO( fd_conf_deinit(), );
     173       
    172174        fd_log_debug(FD_PROJECT_BINARY " daemon is terminated.\n");
    173175       
  • include/freeDiameter/freeDiameter.h

    r403 r447  
    726726int fd_app_check(struct fd_list * list, application_id_t aid, struct fd_app **detail);
    727727int fd_app_check_common(struct fd_list * list1, struct fd_list * list2, int * common_found);
     728int fd_app_empty(struct fd_list * list);
    728729
    729730#endif /* _FREEDIAMETER_H */
Note: See TracChangeset for help on using the changeset viewer.