- Add patch for RH bug #437208 (tracking network status).

This commit is contained in:
Matthew Barnes 2008-03-14 17:01:26 +00:00
parent df93db5107
commit e09af7888e
2 changed files with 193 additions and 1 deletions

View File

@ -0,0 +1,185 @@
diff -up evolution-2.22.0/shell/e-shell-nm-glib.c.line-status evolution-2.22.0/shell/e-shell-nm-glib.c
--- evolution-2.22.0/shell/e-shell-nm-glib.c.line-status 2007-11-29 23:23:59.000000000 -0500
+++ evolution-2.22.0/shell/e-shell-nm-glib.c 2008-03-14 12:13:29.000000000 -0400
@@ -33,23 +33,40 @@
static libnm_glib_ctx *nm_ctx = NULL;
static guint id = 0;
-static void e_shell_glib_network_monitor (libnm_glib_ctx *ctx, gpointer user_data)
+static void
+e_shell_glib_network_monitor (libnm_glib_ctx *ctx, gpointer user_data)
{
libnm_glib_state state;
- EShellLineStatus line_status;
EShellWindow *window = E_SHELL_WINDOW (user_data);
EShell *shell = e_shell_window_peek_shell (window);
GNOME_Evolution_ShellState shell_state;
+ gboolean shell_is_online;
+ gboolean shell_is_offline;
g_return_if_fail (ctx != NULL);
state = libnm_glib_get_network_state (ctx);
- line_status = e_shell_get_line_status (shell);
- if (line_status == E_SHELL_LINE_STATUS_ONLINE && state == LIBNM_NO_NETWORK_CONNECTION) {
+ switch (e_shell_get_line_status (shell)) {
+ case E_SHELL_LINE_STATUS_ONLINE:
+ shell_is_online = TRUE;
+ shell_is_offline = FALSE;
+ break;
+ case E_SHELL_LINE_STATUS_OFFLINE:
+ case E_SHELL_LINE_STATUS_FORCED_OFFLINE:
+ shell_is_online = FALSE;
+ shell_is_offline = TRUE;
+ break;
+ default: /* in-between states */
+ shell_is_online = FALSE;
+ shell_is_offline = FALSE;
+ }
+
+ if (shell_is_online && state == LIBNM_NO_NETWORK_CONNECTION) {
shell_state = GNOME_Evolution_FORCED_OFFLINE;
e_shell_go_offline (shell, window, shell_state);
- } else if (line_status == E_SHELL_LINE_STATUS_OFFLINE && state == LIBNM_ACTIVE_NETWORK_CONNECTION) {
+
+ } else if (shell_is_offline && state == LIBNM_ACTIVE_NETWORK_CONNECTION) {
shell_state = GNOME_Evolution_USER_ONLINE;
e_shell_go_online (shell, window, shell_state);
}
@@ -58,15 +75,15 @@ static void e_shell_glib_network_monitor
int e_shell_nm_glib_initialise (EShellWindow *window);
void e_shell_nm_glib_dispose (EShellWindow *window);
-int e_shell_nm_glib_initialise (EShellWindow *window)
+int
+e_shell_nm_glib_initialise (EShellWindow *window)
{
- if (!nm_ctx)
- {
+ if (!nm_ctx) {
nm_ctx = libnm_glib_init ();
if (!nm_ctx) {
- fprintf (stderr, "Could not initialize libnm.\n");
- return FALSE;
- }
+ g_warning ("Could not initialize libnm.");
+ return FALSE;
+ }
}
id = libnm_glib_register_callback (nm_ctx, e_shell_glib_network_monitor, window, NULL);
@@ -74,7 +91,8 @@ int e_shell_nm_glib_initialise (EShellWi
return TRUE;
}
-void e_shell_nm_glib_dispose (EShellWindow *window)
+void
+e_shell_nm_glib_dispose (EShellWindow *window)
{
if (id != 0 && nm_ctx != NULL) {
libnm_glib_unregister_callback (nm_ctx, id);
@@ -83,4 +101,3 @@ void e_shell_nm_glib_dispose (EShellWind
id = 0;
}
}
-
diff -up evolution-2.22.0/shell/e-shell-nm.c.line-status evolution-2.22.0/shell/e-shell-nm.c
--- evolution-2.22.0/shell/e-shell-nm.c.line-status 2008-02-22 04:51:05.000000000 -0500
+++ evolution-2.22.0/shell/e-shell-nm.c 2008-03-14 12:13:29.000000000 -0400
@@ -35,17 +35,12 @@
#include <dbus/dbus-glib.h>
#include <NetworkManager/NetworkManager.h>
-typedef enum _ShellLineStatus {
- E_SHELL_LINE_DOWN,
- E_SHELL_LINE_UP
-} ShellLineStatus;
-
-
static gboolean init_dbus (EShellWindow *window);
+int e_shell_dbus_initialise (EShellWindow *window);
+void e_shell_dbus_dispose (EShellWindow *window);
static DBusConnection *dbus_connection = NULL;
-
static gboolean
reinit_dbus (gpointer user_data)
{
@@ -63,11 +58,12 @@ e_shell_network_monitor (DBusConnection
{
DBusError error;
const char *object;
- ShellLineStatus status;
EShellWindow *window = NULL;
EShell *shell = NULL;
GNOME_Evolution_ShellState shell_state;
- EShellLineStatus line_status;
+ gboolean shell_is_online;
+ gboolean shell_is_offline;
+ gboolean network_device_active;
if (!user_data || !E_IS_SHELL_WINDOW (user_data))
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
@@ -89,9 +85,9 @@ e_shell_network_monitor (DBusConnection
}
if (dbus_message_is_signal (message, NM_DBUS_INTERFACE, "DeviceNoLongerActive"))
- status = E_SHELL_LINE_DOWN;
+ network_device_active = FALSE;
else if (dbus_message_is_signal (message, NM_DBUS_INTERFACE, "DeviceNowActive"))
- status = E_SHELL_LINE_UP;
+ network_device_active = TRUE;
else
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
@@ -99,12 +95,26 @@ e_shell_network_monitor (DBusConnection
&object, DBUS_TYPE_INVALID))
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
- line_status = e_shell_get_line_status (shell);
+ switch (e_shell_get_line_status (shell)) {
+ case E_SHELL_LINE_STATUS_ONLINE:
+ shell_is_online = TRUE;
+ shell_is_offline = FALSE;
+ break;
+ case E_SHELL_LINE_STATUS_OFFLINE:
+ case E_SHELL_LINE_STATUS_FORCED_OFFLINE:
+ shell_is_online = FALSE;
+ shell_is_offline = TRUE;
+ break;
+ default: /* in-between states */
+ shell_is_online = FALSE;
+ shell_is_offline = FALSE;
+ }
- if (line_status == E_SHELL_LINE_STATUS_ONLINE && status == E_SHELL_LINE_DOWN) {
+ if (shell_is_online && !network_device_active) {
shell_state = GNOME_Evolution_FORCED_OFFLINE;
e_shell_go_offline (shell, window, shell_state);
- } else if (line_status == E_SHELL_LINE_STATUS_OFFLINE && status == E_SHELL_LINE_UP) {
+
+ } else if (shell_is_offline && network_device_active) {
shell_state = GNOME_Evolution_USER_ONLINE;
e_shell_go_online (shell, window, shell_state);
}
@@ -153,14 +163,16 @@ init_dbus (EShellWindow *window)
return FALSE;
}
-int e_shell_dbus_initialise (EShellWindow *window)
+int
+e_shell_dbus_initialise (EShellWindow *window)
{
g_type_init ();
return init_dbus (window);
}
-void e_shell_dbus_dispose (EShellWindow *window)
+void
+e_shell_dbus_dispose (EShellWindow *window)
{
//FIXME
return;

View File

@ -46,7 +46,7 @@
Name: evolution
Version: 2.22.0
Release: 1%{?dist}
Release: 2%{?dist}
License: GPLv2 and GFDL+
Group: Applications/Productivity
Summary: GNOME's next-generation groupware suite
@ -81,6 +81,9 @@ Patch14: evolution-2.7.1-no-gnome-common.patch
# RH bug #176400
Patch15: evolution-2.9.1-im-context-reset.patch
# RH bug #437208 / GNOME bug #518103
Patch16: evolution-2.22.0-line-status.patch
## Dependencies ###
Requires(post): GConf2
@ -223,6 +226,7 @@ This package contains the plugin to filter junk mail using SpamAssassin.
%patch13 -p1 -b .fix-conduit-dir
%patch14 -p1 -b .no-gnome-common
%patch15 -p1 -b .im-context-reset
%patch16 -p1 -b .line-status
mkdir -p krb5-fakeprefix/include
mkdir -p krb5-fakeprefix/lib
@ -650,6 +654,9 @@ rm -rf $RPM_BUILD_ROOT
%{evo_plugin_dir}/liborg-gnome-sa-junk-plugin.so
%changelog
* Fri Mar 14 2008 Matthew Barnes <mbarnes@redhat.com> - 2.22.0-2.fc9
- Add patch for RH bug #437208 (tracking network status).
* Mon Mar 10 2008 Matthew Barnes <mbarnes@redhat.com> - 2.22.0-1.fc9
- Update to 2.22.0
- Remove patch for CVE-2008-0072 (fixed upstream).