Comment 27 for bug 90258

Revision history for this message
Gert Kulyk (gkulyk) wrote :

After further inverstigation of the problem, I've found another workaround. As stated above, a similar, if not the same, issue existed before (http://bugzilla.gnome.org/show_bug.cgi?id=268533). Fedora/Redhat therefore provided a patch to workaround the issue. They were patching src/server.c, where the following test is made:

if (e_data_cal_factory_get_n_backends (e_data_cal_factory) == 0 &&
     e_data_book_factory_get_n_backends (e_data_book_factory) == 0) {
  g_message ("termination_handler(): Terminating the Server. Have a nice day.");
  bonobo_main_quit ();
 }

As above stated, the condition is never reached because of "e_data_book_factory_get_n_backends (e_data_book_factory)" is never returning a value equal zero, so bonobo_main_quit () is never called.

The (slighly modified, because they had to deal only with one open addressbook) additional test they applied looks like this:

if (e_data_cal_factory_get_n_backends (e_data_cal_factory) == 0 &&
     e_data_book_factory_get_n_backends (e_data_book_factory) > 0) {
  g_message ("termination_handler(): Terminating the Server (with workaround for bug 420167). Have a nice day.");
  bonobo_main_quit ();
 }

This would at least cause e-d-s to shut down. I know this is not really fixing the cause of the issue (I do not have the skills to do that), but something like that would in my opinion be more sane than beeing forced to kill the server before you can do a re-login. What are you thinking about something like that? For me this works perfectly. If you want, I can provide a patch/debdiff/testpackage, whatever you want if you need it.