diff -Nru --exclude '*.html' --exclude aclocal.m4 --exclude configure evolution-exchange-2.22.1/calendar/e-cal-backend-exchange.c evolution-exchange-2.22.2/calendar/e-cal-backend-exchange.c --- evolution-exchange-2.22.1/calendar/e-cal-backend-exchange.c 2008-04-04 11:18:43.000000000 +0200 +++ evolution-exchange-2.22.2/calendar/e-cal-backend-exchange.c 2008-05-23 13:23:45.000000000 +0200 @@ -391,6 +391,8 @@ return GNOME_Evolution_Calendar_NoSuchCal; } + exchange_account_set_online (cbex->account); + exchange_account_connect (cbex->account, password, &acresult); if (acresult != EXCHANGE_ACCOUNT_CONNECT_SUCCESS) { g_mutex_unlock (cbex->priv->open_lock); @@ -398,8 +400,6 @@ return GNOME_Evolution_Calendar_AuthenticationFailed; } - exchange_account_set_online (cbex->account); - cbex->folder = exchange_account_get_folder (cbex->account, uristr); if (!cbex->folder) { ESource *source; diff -Nru --exclude '*.html' --exclude aclocal.m4 --exclude configure /tmp/5p14N6izTP/evolution-exchange-2.22.1/calendar/e-cal-backend-exchange-tasks.c /tmp/ZhOamEs2rO/evolution-exchange-2.22.2/calendar/e-cal-backend-exchange-tasks.c --- evolution-exchange-2.22.1/calendar/e-cal-backend-exchange-tasks.c 2008-04-04 11:18:43.000000000 +0200 +++ evolution-exchange-2.22.2/calendar/e-cal-backend-exchange-tasks.c 2008-05-23 13:23:45.000000000 +0200 @@ -1330,7 +1330,7 @@ for (l = comps; l; l = l->next) { const char *uid; - char *calobj, *rid = NULL; + char *obj, *rid = NULL; subcomp = l->data; @@ -1345,6 +1345,7 @@ e_cal_component_get_uid (ecalcomp, &uid); rid = e_cal_component_get_recurid_as_string (ecalcomp); + obj = (char *) e_cal_component_get_as_string (ecalcomp); /*see if the object is there in the cache. if found, modify object, else create object*/ @@ -1353,28 +1354,27 @@ char *old_object; e_cal_backend_exchange_cache_unlock (cbex); - status = modify_task_object (backend, cal, calobj, CALOBJ_MOD_THIS, &old_object, NULL); + status = modify_task_object (backend, cal, obj, CALOBJ_MOD_THIS, &old_object, NULL); if (status != GNOME_Evolution_Calendar_Success) { g_free (rid); goto error; } - e_cal_backend_notify_object_modified (E_CAL_BACKEND (backend), old_object, calobj); + e_cal_backend_notify_object_modified (E_CAL_BACKEND (backend), old_object, obj); g_free (old_object); } else { char *returned_uid; e_cal_backend_exchange_cache_unlock (cbex); - calobj = (char *) icalcomponent_as_ical_string (subcomp); - status = create_task_object (backend, cal, &calobj, &returned_uid); + status = create_task_object (backend, cal, &obj, &returned_uid); if (status != GNOME_Evolution_Calendar_Success) { - g_free (calobj); + g_free (obj); g_free (rid); goto error; } - e_cal_backend_notify_object_created (E_CAL_BACKEND (backend), calobj); - g_free (calobj); + e_cal_backend_notify_object_created (E_CAL_BACKEND (backend), obj); + g_free (obj); } g_free (rid); } diff -Nru --exclude '*.html' --exclude aclocal.m4 --exclude configure /tmp/5p14N6izTP/evolution-exchange-2.22.1/camel/camel-exchange-store.c /tmp/ZhOamEs2rO/evolution-exchange-2.22.2/camel/camel-exchange-store.c --- evolution-exchange-2.22.1/camel/camel-exchange-store.c 2008-04-04 11:18:32.000000000 +0200 +++ evolution-exchange-2.22.2/camel/camel-exchange-store.c 2008-05-23 13:23:45.000000000 +0200 @@ -376,6 +376,14 @@ } } +static void +update_camel_stub (gpointer folder_name, gpointer folder, gpointer user_data) +{ + CamelExchangeFolder *exch_folder = CAMEL_EXCHANGE_FOLDER (folder); + if (exch_folder) + exch_folder->stub = (CamelStub *)user_data; +} + static gboolean exchange_connect (CamelService *service, CamelException *ex) { @@ -421,6 +429,8 @@ if (online_mode) { camel_exchange_get_password (service, ex); if (camel_exception_is_set (ex)) { + camel_object_unref (exch->stub); + exch->stub = NULL; g_mutex_unlock (exch->connect_lock); return FALSE; } @@ -447,12 +457,16 @@ camel_exception_set (ex, CAMEL_EXCEPTION_SYSTEM, _("Could not authenticate to server. " "(Password incorrect?)\n\n")); + camel_object_unref (exch->stub); + exch->stub = NULL; g_mutex_unlock (exch->connect_lock); return FALSE; } else { exch->stub_connected = TRUE; } + g_hash_table_foreach (exch->folders, update_camel_stub, exch->stub); + g_mutex_unlock (exch->connect_lock); return TRUE; @@ -461,6 +475,13 @@ static gboolean exchange_disconnect (CamelService *service, gboolean clean, CamelException *ex) { + + CamelExchangeStore *exch = CAMEL_EXCHANGE_STORE (service); + + if (exch->stub) { + exch->stub = NULL; + } + return TRUE; } diff -Nru --exclude '*.html' --exclude aclocal.m4 --exclude configure /tmp/5p14N6izTP/evolution-exchange-2.22.1/ChangeLog /tmp/ZhOamEs2rO/evolution-exchange-2.22.2/ChangeLog --- evolution-exchange-2.22.1/ChangeLog 2008-04-07 14:59:31.000000000 +0200 +++ evolution-exchange-2.22.2/ChangeLog 2008-05-26 13:51:14.000000000 +0200 @@ -1,3 +1,43 @@ +2008-05-26 Srinivasa Ragavan + + * NEWS, configure.in: Evolution Exchange 2.22.2 release. + +2008-05-20 Chenthill Palanisamy + + Downstream fix for bug #203481 (bnc) + * calendar/e-cal-backend-exchange-tasks.c: (receive_task_objects): Fix the + conflict in local variables. + +2008-05-13 Matthew Barnes + + ** Fix for bug #523023 + + * storage/exchange-storage.c: (account_new_folder): Another leak fix. + + +2008-05-02 Johnny Jacob + + * NEWS, Configure.in : Evolution Exchange 2.22.1.1 release. + +2008-05-02 Suman Manjunath + + * calendar/e-cal-backend-exchange.c: (open_calendar): + Set account mode to 'ONLINE_MODE' before attempting to connect. + +2008-05-02 Bharath Acharya + + Fixes #358706 (bnc) + + * camel/camel-exchange-store.c: + (update_camel_stub): Updates the camel stub value + (exchange_connect): + (exchange_disconnect): Reset the stub so that reconnect happens sanely. + * mail/mail-stub-listener.h: Store the stub value in the listener so + that we can use the folders_by_name (hash table) later. + * storage/exchange-component.c: + (impl_setLineStatus): + (new_connection): Update the hash table for the new stub + 2008-04-07 Srinivasa Ragavan * NEWS, configure.in: Evolution Exchange 2.22.1 release. diff -Nru --exclude '*.html' --exclude aclocal.m4 --exclude configure /tmp/5p14N6izTP/evolution-exchange-2.22.1/configure.in /tmp/ZhOamEs2rO/evolution-exchange-2.22.2/configure.in --- evolution-exchange-2.22.1/configure.in 2008-04-07 13:24:35.000000000 +0200 +++ evolution-exchange-2.22.2/configure.in 2008-05-25 12:37:31.000000000 +0200 @@ -1,7 +1,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ(2.52) -AC_INIT(evolution-exchange, 2.22.1, http://bugzilla.gnome.org/enter_bug.cgi?product=Evolution%20Exchange) +AC_INIT(evolution-exchange, 2.22.2, http://bugzilla.gnome.org/enter_bug.cgi?product=Evolution%20Exchange) AC_CONFIG_SRCDIR(storage) AM_INIT_AUTOMAKE(AC_PACKAGE_NAME, AC_PACKAGE_VERSION) diff -Nru --exclude '*.html' --exclude aclocal.m4 --exclude configure /tmp/5p14N6izTP/evolution-exchange-2.22.1/debian/changelog /tmp/ZhOamEs2rO/evolution-exchange-2.22.2/debian/changelog --- evolution-exchange-2.22.1/debian/changelog 2008-05-26 23:06:56.000000000 +0200 +++ evolution-exchange-2.22.2/debian/changelog 2008-05-26 23:06:56.000000000 +0200 @@ -1,3 +1,15 @@ +evolution-exchange (2.22.2-0ubuntu1) hardy-proposed; urgency=low + + * New upstream versions: + - Bug fixes: + - #203481: Fix the conflict in local variables. + - #523023: Another leak fix. + - #358706: (Novell Bugzilla) If Evolution is switched from Offline to + Online, the stub is disconnected and no stub operations would work. Fixed. + - Set account mode to 'ONLINE_MODE' before attempting to connect. + + -- Sebastien Bacher Mon, 26 May 2008 22:58:08 +0200 + evolution-exchange (2.22.1-0ubuntu1) hardy; urgency=low * New upstream version: diff -Nru --exclude '*.html' --exclude aclocal.m4 --exclude configure /tmp/5p14N6izTP/evolution-exchange-2.22.1/docs/reference/html/evolution-exchange.devhelp /tmp/ZhOamEs2rO/evolution-exchange-2.22.2/docs/reference/html/evolution-exchange.devhelp --- evolution-exchange-2.22.1/docs/reference/html/evolution-exchange.devhelp 2008-04-07 14:59:35.000000000 +0200 +++ evolution-exchange-2.22.2/docs/reference/html/evolution-exchange.devhelp 2008-05-26 13:51:19.000000000 +0200 @@ -58,23 +58,23 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + diff -Nru --exclude '*.html' --exclude aclocal.m4 --exclude configure /tmp/5p14N6izTP/evolution-exchange-2.22.1/docs/reference/html/evolution-exchange.devhelp2 /tmp/ZhOamEs2rO/evolution-exchange-2.22.2/docs/reference/html/evolution-exchange.devhelp2 --- evolution-exchange-2.22.1/docs/reference/html/evolution-exchange.devhelp2 2008-04-07 14:59:35.000000000 +0200 +++ evolution-exchange-2.22.2/docs/reference/html/evolution-exchange.devhelp2 2008-05-26 13:51:19.000000000 +0200 @@ -58,23 +58,23 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + diff -Nru --exclude '*.html' --exclude aclocal.m4 --exclude configure /tmp/5p14N6izTP/evolution-exchange-2.22.1/mail/mail-stub-listener.h /tmp/ZhOamEs2rO/evolution-exchange-2.22.2/mail/mail-stub-listener.h --- evolution-exchange-2.22.1/mail/mail-stub-listener.h 2008-04-04 11:18:33.000000000 +0200 +++ evolution-exchange-2.22.2/mail/mail-stub-listener.h 2008-05-23 13:23:45.000000000 +0200 @@ -23,6 +23,7 @@ struct _MailStubListener { GObject parent; + gpointer *stub; char *socket_path; GIOChannel *channel; diff -Nru --exclude '*.html' --exclude aclocal.m4 --exclude configure /tmp/5p14N6izTP/evolution-exchange-2.22.1/NEWS /tmp/ZhOamEs2rO/evolution-exchange-2.22.2/NEWS --- evolution-exchange-2.22.1/NEWS 2008-04-07 14:56:09.000000000 +0200 +++ evolution-exchange-2.22.2/NEWS 2008-05-26 13:50:12.000000000 +0200 @@ -1,3 +1,17 @@ +Evolution Exchange 2.22.2 2008-05-26 +------------------------------------ + +Bug fixes: + #203481: Fix the conflict in local variables. (Chenthill Palanisamy) + #523023: Another leak fix. (Matthew Barnes) + +Evolution Exchange 2.22.1.1 2008-05-02 +------------------------------------ + +Bug fixes: + #358706: (Novell Bugzilla) If Evolution is switched from Offline to Online, the stub is disconnected and no stub operations would work. Fixed. (Bharath) + Set account mode to 'ONLINE_MODE' before attempting to connect. (Suman Manjunath) + Evolution Exchange 2.22.1 2008-04-07 ------------------------------------ diff -Nru --exclude '*.html' --exclude aclocal.m4 --exclude configure /tmp/5p14N6izTP/evolution-exchange-2.22.1/storage/exchange-component.c /tmp/ZhOamEs2rO/evolution-exchange-2.22.2/storage/exchange-component.c --- evolution-exchange-2.22.1/storage/exchange-component.c 2008-04-04 11:18:42.000000000 +0200 +++ evolution-exchange-2.22.2/storage/exchange-component.c 2008-05-23 13:23:45.000000000 +0200 @@ -274,7 +274,7 @@ if (ev->_major == CORBA_NO_EXCEPTION) { exchange_component_update_accounts (component, status); g_signal_emit (component, linestatus_signal_id, 0, - status ? ONLINE_MODE : OFFLINE_MODE); + priv->linestatus ? ONLINE_MODE : OFFLINE_MODE); return; } else { CORBA_exception_free (ev); @@ -342,7 +342,8 @@ new_connection (MailStubListener *listener, int cmd_fd, int status_fd, ExchangeComponentAccount *baccount) { - MailStub *mse; + MailStub *stub; + MailStubExchange *mse, *mse_prev; ExchangeAccount *account = baccount->account; int mode; @@ -354,7 +355,17 @@ goto end; } - mse = mail_stub_exchange_new (account, cmd_fd, status_fd); + stub = mail_stub_exchange_new (account, cmd_fd, status_fd); + mse = (MailStubExchange *) stub; + mse_prev = (MailStubExchange *) listener->stub; + if (mse_prev) { + g_hash_table_destroy (mse->folders_by_name); + mse->folders_by_name = mse_prev->folders_by_name; + mse_prev->folders_by_name = NULL; + } + + g_object_unref (listener->stub); + listener->stub = mse; /* FIXME : We need to close these sockets */ /* if (exchange_account_connect (account, NULL, &result)) diff -Nru --exclude '*.html' --exclude aclocal.m4 --exclude configure /tmp/5p14N6izTP/evolution-exchange-2.22.1/storage/exchange-storage.c /tmp/ZhOamEs2rO/evolution-exchange-2.22.2/storage/exchange-storage.c --- evolution-exchange-2.22.1/storage/exchange-storage.c 2008-04-04 11:18:42.000000000 +0200 +++ evolution-exchange-2.22.2/storage/exchange-storage.c 2008-05-23 13:23:45.000000000 +0200 @@ -129,7 +129,7 @@ { const char *path = e_folder_exchange_get_path (folder); - e_storage_new_folder (storage, path, folder); + e_storage_new_folder (storage, path, g_object_ref (folder)); if (e_folder_exchange_get_has_subfolders (folder)) { e_storage_declare_has_subfolders (storage, path, _("Searching..."));