diff --git a/src/geturl.c b/src/geturl.c index 1babb2a5..b20f28b2 100644 --- a/src/geturl.c +++ b/src/geturl.c @@ -134,6 +134,7 @@ void curl_shutdown() curl_easy_cleanup(curl_connections[i].curl_handle); memset(&(curl_connections[i]), 0, sizeof(curl_connections[i])); } + curl_global_cleanup(); } int curl_get_connection() { diff --git a/src/source.c b/src/source.c index d1f50173..80113510 100644 --- a/src/source.c +++ b/src/source.c @@ -344,7 +344,7 @@ void *source_main(void *arg) if (config->yp_url[i]) { source->ypdata[source->num_yp_directories] = yp_create_ypdata(); source->ypdata[source->num_yp_directories]->yp_url = - config->yp_url[i]; + strdup (config->yp_url[i]); source->ypdata[source->num_yp_directories]->yp_url_timeout = config->yp_url_timeout[i]; source->ypdata[source->num_yp_directories]->yp_touch_interval = 0; diff --git a/src/yp.c b/src/yp.c index 2cba2bf8..185a8e01 100644 --- a/src/yp.c +++ b/src/yp.c @@ -434,6 +434,9 @@ ypdata_t *yp_create_ypdata() void yp_destroy_ypdata(ypdata_t *ypdata) { if (ypdata) { + if (ypdata->yp_url) { + free(ypdata->yp_url); + } if (ypdata->sid) { free(ypdata->sid); }