diff options
| author | Jiri Moskovcak <jmoskovc@redhat.com> | 2009-09-17 19:24:53 +0200 |
|---|---|---|
| committer | Jiri Moskovcak <jmoskovc@redhat.com> | 2009-09-17 19:24:53 +0200 |
| commit | 751e7db6e39140cb7f0187dea32af949ce56fdb8 (patch) | |
| tree | d817e917ce94a9f863eaffe85d5be37630389074 /src | |
| parent | b3cd99a13a2370f655cf8b8ff4944e3717456784 (diff) | |
| parent | 3a4dc69c0e6e786aea00a38df01952ca5780bf82 (diff) | |
| download | abrt-751e7db6e39140cb7f0187dea32af949ce56fdb8.tar.gz abrt-751e7db6e39140cb7f0187dea32af949ce56fdb8.tar.xz abrt-751e7db6e39140cb7f0187dea32af949ce56fdb8.zip | |
Merge branch 'master' of ssh://git.fedorahosted.org/git/abrt
Diffstat (limited to 'src')
| -rw-r--r-- | src/Applet/Makefile.am | 6 | ||||
| -rw-r--r-- | src/Daemon/CommLayerServerDBus.cpp | 183 | ||||
| -rw-r--r-- | src/Daemon/Daemon.cpp | 1 | ||||
| -rw-r--r-- | src/Daemon/Daemon.h | 10 | ||||
| -rw-r--r-- | src/Daemon/org.fedoraproject.abrt.policy | 11 |
5 files changed, 16 insertions, 195 deletions
diff --git a/src/Applet/Makefile.am b/src/Applet/Makefile.am index accca39..67c1776 100644 --- a/src/Applet/Makefile.am +++ b/src/Applet/Makefile.am @@ -23,13 +23,13 @@ abrt_applet_CPPFLAGS = \ # $(DBUS_CFLAGS) # $(DBUS_GLIB_CFLAGS) abrt_applet_LDADD = \ - ../../lib/Utils/libABRTUtils.la \ -lglib-2.0 \ -lgthread-2.0 \ - $(DL_LIBS) \ - $(GTK_LIBS) \ $(DBUSCPP_LIBS) \ $(LIBNOTIFY_LIBS) +# ../../lib/Utils/libABRTUtils.la +# $(DL_LIBS) +# $(GTK_LIBS) EXTRA_DIST = abrt-applet.desktop popup.GtkBuilder diff --git a/src/Daemon/CommLayerServerDBus.cpp b/src/Daemon/CommLayerServerDBus.cpp index 2f88a72..08cd3d5 100644 --- a/src/Daemon/CommLayerServerDBus.cpp +++ b/src/Daemon/CommLayerServerDBus.cpp @@ -1,4 +1,3 @@ -//#include <iostream> #include <dbus/dbus.h> #include "abrtlib.h" #include "abrt_dbus.h" @@ -430,121 +429,6 @@ static int handle_SetSettings(DBusMessage* call, DBusMessage* reply) * Glib integration machinery */ -/* Callback: "glib says dbus fd is active" */ -static gboolean handle_dbus(GIOChannel *gio, GIOCondition condition, gpointer data) -{ - DBusWatch *watch = (DBusWatch*)data; - - VERB3 log("%s(gio, condition:%x [bits:IN/PRI/OUT/ERR/HUP...], data)", __func__, int(condition)); - - /* Notify the D-Bus library when a previously-added watch - * is ready for reading or writing, or has an exception such as a hangup. - */ - int glib_flags = int(condition); - int dbus_flags = 0; - if (glib_flags & G_IO_IN) dbus_flags |= DBUS_WATCH_READABLE; - if (glib_flags & G_IO_OUT) dbus_flags |= DBUS_WATCH_WRITABLE; - if (glib_flags & G_IO_ERR) dbus_flags |= DBUS_WATCH_ERROR; - if (glib_flags & G_IO_HUP) dbus_flags |= DBUS_WATCH_HANGUP; - /* - * TODO: - * If dbus_watch_handle returns FALSE, then the file descriptor - * may still be ready for reading or writing, but more memory - * is needed in order to do the reading or writing. If you ignore - * the FALSE return, your application may spin in a busy loop - * on the file descriptor until memory becomes available, - * but nothing more catastrophic should happen. - */ - dbus_watch_handle(watch, dbus_flags); - - while (dbus_connection_dispatch(g_dbus_conn) == DBUS_DISPATCH_DATA_REMAINS) - VERB3 log("%s: more data to process, looping", __func__); - return TRUE; /* "glib, do not remove this even source!" */ -} -struct watch_app_info_t -{ - GIOChannel *channel; - guint event_source_id; - bool watch_enabled; -}; -/* Callback: "dbus_watch_get_enabled() may return a different value than it did before" */ -static void toggled_watch(DBusWatch *watch, void* data) -{ - VERB3 log("%s(watch:%p, data)", __func__, watch); - - watch_app_info_t* app_info = (watch_app_info_t*)dbus_watch_get_data(watch); - if (dbus_watch_get_enabled(watch)) - { - if (!app_info->watch_enabled) - { - app_info->watch_enabled = true; - int dbus_flags = dbus_watch_get_flags(watch); - int glib_flags = 0; - if (dbus_flags & DBUS_WATCH_READABLE) - glib_flags |= G_IO_IN; - if (dbus_flags & DBUS_WATCH_WRITABLE) - glib_flags |= G_IO_OUT; - VERB3 log(" adding watch to glib main loop. dbus_flags:%x glib_flags:%x", dbus_flags, glib_flags); - app_info->event_source_id = g_io_add_watch(app_info->channel, GIOCondition(glib_flags), handle_dbus, watch); - } - /* else: it was already enabled */ - } else { - if (app_info->watch_enabled) - { - app_info->watch_enabled = false; - /* does it free the hidden GSource too? */ - VERB3 log(" removing watch from glib main loop"); - g_source_remove(app_info->event_source_id); - } - /* else: it was already disabled */ - } -} -/* Callback: "libdbus needs a new watch to be monitored by the main loop" */ -static dbus_bool_t add_watch(DBusWatch *watch, void* data) -{ - VERB3 log("%s(watch:%p, data)", __func__, watch); - - watch_app_info_t* app_info = (watch_app_info_t*)xzalloc(sizeof(*app_info)); - dbus_watch_set_data(watch, app_info, free); - - int fd = dbus_watch_get_unix_fd(watch); - VERB3 log(" dbus_watch_get_unix_fd():%d", fd); - app_info->channel = g_io_channel_unix_new(fd); - /* _unconditionally_ adding it to event loop would be an error */ - toggled_watch(watch, data); - return TRUE; -} -/* Callback: "libdbus no longer needs a watch to be monitored by the main loop" */ -static void remove_watch(DBusWatch *watch, void* data) -{ - VERB3 log("%s()", __func__); - watch_app_info_t* app_info = (watch_app_info_t*)dbus_watch_get_data(watch); - if (app_info->watch_enabled) - { - app_info->watch_enabled = false; - g_source_remove(app_info->event_source_id); - } - g_io_channel_unref(app_info->channel); -} - -/* Callback: "libdbus needs a new timeout to be monitored by the main loop" */ -static dbus_bool_t add_timeout(DBusTimeout *timeout, void* data) -{ - VERB3 log("%s()", __func__); - return TRUE; -} -/* Callback: "libdbus no longer needs a timeout to be monitored by the main loop" */ -static void remove_timeout(DBusTimeout *timeout, void* data) -{ - VERB3 log("%s()", __func__); -} -/* Callback: "dbus_timeout_get_enabled() may return a different value than it did before" */ -static void timeout_toggled(DBusTimeout *timeout, void* data) -{ -//seems to be never called, let's make it noisy - log("%s()", __func__); -} - /* Callback: "a message is received to a registered object path" */ static DBusHandlerResult message_received(DBusConnection *conn, DBusMessage *msg, void* data) { @@ -603,16 +487,6 @@ static DBusHandlerResult message_received(DBusConnection *conn, DBusMessage *msg return DBUS_HANDLER_RESULT_HANDLED; } -/* Callback: "DBusObjectPathVTable is unregistered (or its connection is freed)" */ -static void unregister_vtable(DBusConnection *conn, void* data) -{ - VERB3 log("%s()", __func__); -} -/* Table */ -static const DBusObjectPathVTable vtable = { - /* .unregister_function = */ unregister_vtable, - /* .message_function = */ message_received, -}; static void handle_dbus_err(bool error_flag, DBusError *err) { @@ -630,23 +504,6 @@ static void handle_dbus_err(bool error_flag, DBusError *err) CC_DBUS_NAME); } -/* - * Initialization works as follows: - * - * we call dbus_bus_get - * we call dbus_connection_set_watch_functions - * libdbus calls back add_watch(watch:0x2341090, data), this watch is for writing - * we call toggled_watch, but it finds that watch is not to be enabled yet - * libdbus calls back add_watch(watch:0x23410e0, data), this watch is for reading - * we call toggled_watch, it adds watch's fd to glib main loop with POLLIN - * (note: these watches are different objects, but they have the same fd) - * we call dbus_connection_set_timeout_functions - * we call dbus_connection_register_object_path - * we call dbus_bus_request_name - * libdbus calls back add_timeout() - * libdbus calls back remove_timeout() - * (therefore there is no code yet in timeout_toggled (see above), it's not used) - */ CCommLayerServerDBus::CCommLayerServerDBus() { DBusConnection* conn; @@ -657,44 +514,8 @@ CCommLayerServerDBus::CCommLayerServerDBus() g_dbus_conn = conn = dbus_bus_get(DBUS_BUS_SYSTEM, &err); handle_dbus_err(conn == NULL, &err); -//do we need this? why? -//log("dbus_connection_set_dispatch_status_function"); -// dbus_connection_set_dispatch_status_function(conn, -// dispatch, /* void dispatch(DBusConnection *conn, DBusDispatchStatus new_status, void* data) */ -// NULL, /* data */ -// NULL /* free_data_function */ -// ) - VERB3 log("dbus_connection_set_watch_functions"); - if (!dbus_connection_set_watch_functions(conn, - add_watch, - remove_watch, - toggled_watch, - NULL, /* data */ - NULL /* free_data_function */ - ) - ) { - die_out_of_memory(); - } - VERB3 log("dbus_connection_set_timeout_functions"); - if (!dbus_connection_set_timeout_functions(conn, - add_timeout, - remove_timeout, - timeout_toggled, - NULL, /* data */ - NULL /* free_data_function */ - ) - ) { - die_out_of_memory(); - } - VERB3 log("dbus_connection_register_object_path"); - if (!dbus_connection_register_object_path(conn, - "/com/redhat/abrt", - &vtable, - NULL /* data */ - ) - ) { - die_out_of_memory(); - } + attach_dbus_conn_to_glib_main_loop(conn, "/com/redhat/abrt", message_received); + VERB3 log("dbus_bus_request_name"); int rc = dbus_bus_request_name(conn, CC_DBUS_NAME, DBUS_NAME_FLAG_REPLACE_EXISTING, &err); handle_dbus_err(rc < 0, &err); diff --git a/src/Daemon/Daemon.cpp b/src/Daemon/Daemon.cpp index 5a5dfeb..780210c 100644 --- a/src/Daemon/Daemon.cpp +++ b/src/Daemon/Daemon.cpp @@ -112,7 +112,6 @@ typedef struct cron_callback_data_t static uint8_t s_sig_caught; static GMainLoop* g_pMainloop; -int g_verbose; CCommLayerServer* g_pCommLayer; pthread_mutex_t g_pJobsMutex; diff --git a/src/Daemon/Daemon.h b/src/Daemon/Daemon.h index e03d983..c9a653a 100644 --- a/src/Daemon/Daemon.h +++ b/src/Daemon/Daemon.h @@ -28,16 +28,6 @@ class CCrashWatcher; class CCommLayerServer; class CPluginManager; -/* Verbosity level */ -extern int g_verbose; -/* VERB1 log("what you sometimes want to see, even on a production box") */ -#define VERB1 if (g_verbose >= 1) -/* VERB2 log("debug message, not going into insanely small details") */ -#define VERB2 if (g_verbose >= 2) -/* VERB3 log("lots and lots of details") */ -#define VERB3 if (g_verbose >= 3) -/* there is no level > 3 */ - /* Used for sending dbus signals */ extern CCommLayerServer *g_pCommLayer; diff --git a/src/Daemon/org.fedoraproject.abrt.policy b/src/Daemon/org.fedoraproject.abrt.policy index 2cfa8c6..40b09fc 100644 --- a/src/Daemon/org.fedoraproject.abrt.policy +++ b/src/Daemon/org.fedoraproject.abrt.policy @@ -24,4 +24,15 @@ Copyright (c) 2009 Red Hat inc. <allow_inactive>no</allow_inactive> </defaults> </action> + + <!-- install-debuginfos: default yes, administrator can change this --> + <action id="org.fedoraproject.abrt.install-debuginfos"> + <description>Manage settings</description> + <message>Changing the global settings requires authentication</message> + <defaults> + <allow_any>no</allow_any> + <allow_active>yes</allow_active> + <allow_inactive>no</allow_inactive> + </defaults> + </action> </policyconfig> |
