void status_atend(void) { struct cdata_list_t *cl, *cl_next; int pe; for (cl = cdata_list; (cl); cl = cl_next) { cl_next = cl->next; cdata_free(cl->cd); hfree(cl); } if ((pe = pthread_mutex_lock(&status_json_mt))) { hlog(LOG_ERR, "status_atend(): could not lock status_json_mt: %s", strerror(pe)); return; } if (status_json_cached) { hfree(status_json_cached); status_json_cached = NULL; } if ((pe = pthread_mutex_unlock(&status_json_mt))) { hlog(LOG_ERR, "status_atend(): could not unlock status_json_mt: %s", strerror(pe)); return; } }
dbus_bool_t test_connection_setup (DBusLoop *loop, DBusConnection *connection) { CData *cd; cd = NULL; dbus_connection_set_dispatch_status_function (connection, dispatch_status_function, loop, NULL); cd = cdata_new (loop, connection); if (cd == NULL) goto nomem; if (!dbus_connection_set_watch_functions (connection, add_watch, remove_watch, toggle_watch, cd, cdata_free)) goto nomem; cd = cdata_new (loop, connection); if (cd == NULL) goto nomem; if (!dbus_connection_set_timeout_functions (connection, add_timeout, remove_timeout, NULL, cd, cdata_free)) goto nomem; if (dbus_connection_get_dispatch_status (connection) != DBUS_DISPATCH_COMPLETE) { if (!_dbus_loop_queue_dispatch (loop, connection)) goto nomem; } return TRUE; nomem: if (cd) cdata_free (cd); dbus_connection_set_dispatch_status_function (connection, NULL, NULL, NULL); dbus_connection_set_watch_functions (connection, NULL, NULL, NULL, NULL, NULL); dbus_connection_set_timeout_functions (connection, NULL, NULL, NULL, NULL, NULL); return FALSE; }