Hello community, here is the log from the commit of package evolution-data-server checked in at Thu Jun 1 00:12:28 CEST 2006. -------- --- GNOME/evolution-data-server/evolution-data-server.changes 2006-05-29 13:59:14.000000000 +0200 +++ evolution-data-server/evolution-data-server.changes 2006-05-31 23:23:41.000000000 +0200 @@ -1,0 +2,5 @@ +Wed May 31 23:23:11 CEST 2006 - fejj@suse.de + +- Added bnc-176277-2.patch which fixes a deadlock condition + +------------------------------------------------------------------- New: ---- bnc-176277-2.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ evolution-data-server.spec ++++++ --- /var/tmp/diff_new_pack.nvV6ah/_old 2006-06-01 00:12:10.000000000 +0200 +++ /var/tmp/diff_new_pack.nvV6ah/_new 2006-06-01 00:12:10.000000000 +0200 @@ -18,7 +18,7 @@ Autoreqprov: on Summary: Evolution Data Server Version: 1.6.0 -Release: 54 +Release: 55 Source: ftp://ftp.gnome.org/pub/gnome/sources/evolution-data-server/1.6/%{name}-%{version}.tar.bz2 #Patch3: evolution-data-server-gcc4.patch Patch5: evolution-data-server-configure.patch @@ -90,6 +90,7 @@ Patch69: eds-updated-translations.diff Patch70: camel-vfs-stream.diff Patch71: bnc-174255-honour-system-proxy-settings.patch +Patch72: bnc-176277-2.patch Url: http://www.gnome.org BuildRoot: %{_tmppath}/%{name}-%{version}-build Requires: libsoup >= 2.2.6 mozilla-nss @@ -191,6 +192,7 @@ %patch69 %patch70 %patch71 +%patch72 %build rename no nb po/no.* @@ -241,6 +243,8 @@ %{prefix}/share/gtk-doc/html/* %changelog -n evolution-data-server +* Wed May 31 2006 - fejj@suse.de +- Added bnc-176277-2.patch which fixes a deadlock condition * Mon May 29 2006 - vvaradhan@novell.com - Fixes (bnc) 174255 - Honour desktop proxy setting. ++++++ bnc-176277-2.patch ++++++ Index: libedataserver/e-msgport.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/libedataserver/e-msgport.c,v retrieving revision 1.6 diff -u -r1.6 e-msgport.c --- libedataserver/e-msgport.c 10 Jan 2006 07:59:04 -0000 1.6 +++ libedataserver/e-msgport.c 31 May 2006 21:06:57 -0000 @@ -70,7 +70,13 @@ e_pipe (int *fds) { #ifndef G_OS_WIN32 - return pipe (fds); + if (pipe (fds) != -1) + return 0; + + fds[0] = -1; + fds[1] = -1; + + return -1; #else SOCKET temp, socket1 = -1, socket2 = -1; struct sockaddr_in saddr; @@ -180,8 +186,11 @@ closesocket (socket1); out0: closesocket (temp); - errno = EIO; /* XXX */ - + errno = EMFILE; /* FIXME: use the real syscall errno? */ + + fds[0] = -1; + fds[1] = -1; + return -1; #endif @@ -487,9 +496,12 @@ } fd; } pipe; #ifdef HAVE_NSS - struct { - PRFileDesc *read; - PRFileDesc *write; + union { + PRFileDesc *pipe[2]; + struct { + PRFileDesc *read; + PRFileDesc *write; + } fd; } prpipe; #endif /* @#@$#$ glib stuff */ @@ -497,6 +509,26 @@ GMutex *lock; }; + +#ifdef HAVE_NSS +static int +e_prpipe (PRFileDesc **fds) +{ +#ifdef G_OS_WIN32 + if (PR_NewTCPSocketPair (fds) != PR_FAILURE) + return 0; +#else + if (PR_CreatePipe (&fds[0], &fds[1]) != PR_FAILURE) + return 0; +#endif + + fds[0] = NULL; + fds[1] = NULL; + + return -1; +} +#endif + EMsgPort *e_msgport_new(void) { EMsgPort *mp; @@ -505,11 +537,9 @@ e_dlist_init(&mp->queue); mp->lock = g_mutex_new(); mp->cond = g_cond_new(); - mp->pipe.fd.read = -1; - mp->pipe.fd.write = -1; + e_pipe (mp->pipe.pipe); #ifdef HAVE_NSS - mp->prpipe.read = NULL; - mp->prpipe.write = NULL; + e_prpipe (mp->prpipe.pipe); #endif mp->condwait = 0; @@ -525,9 +555,9 @@ E_CLOSE(mp->pipe.fd.write); } #ifdef HAVE_NSS - if (mp->prpipe.read) { - PR_Close(mp->prpipe.read); - PR_Close(mp->prpipe.write); + if (mp->prpipe.fd.read) { + PR_Close(mp->prpipe.fd.read); + PR_Close(mp->prpipe.fd.write); } #endif g_free(mp); @@ -536,40 +566,13 @@ /* get a fd that can be used to wait on the port asynchronously */ int e_msgport_fd(EMsgPort *mp) { - int fd; - - g_mutex_lock(mp->lock); - fd = mp->pipe.fd.read; - if (fd == -1) { - e_pipe(mp->pipe.pipe); - fd = mp->pipe.fd.read; - } - g_mutex_unlock(mp->lock); - - return fd; + return mp->pipe.fd.read; } #ifdef HAVE_NSS PRFileDesc *e_msgport_prfd(EMsgPort *mp) { - PRFileDesc *fd; - - g_mutex_lock(mp->lock); - fd = mp->prpipe.read; - if (fd == NULL) { -#ifdef G_OS_WIN32 - PRFileDesc *fds[2]; - PR_NewTCPSocketPair (fds); - mp->prpipe.read = fds[0]; - mp->prpipe.write = fds[1]; -#else - PR_CreatePipe(&mp->prpipe.read, &mp->prpipe.write); -#endif - fd = mp->prpipe.read; - } - g_mutex_unlock(mp->lock); - - return fd; + return mp->prpipe.fd.read; } #endif @@ -579,7 +582,7 @@ #ifdef HAVE_NSS PRFileDesc *prfd; #endif - + m(printf("put:\n")); g_mutex_lock(mp->lock); e_dlist_addtail(&mp->queue, &msg->ln); @@ -587,9 +590,10 @@ m(printf("put: condwait > 0, waking up\n")); g_cond_signal(mp->cond); } + fd = mp->pipe.fd.write; #ifdef HAVE_NSS - prfd = mp->prpipe.write; + prfd = mp->prpipe.fd.write; #endif g_mutex_unlock(mp->lock); @@ -626,7 +630,7 @@ fd_set rfds; int retry; - m(printf("wait: waitng on pipe\n")); + m(printf("wait: waiting on pipe\n")); g_mutex_unlock(mp->lock); do { FD_ZERO(&rfds); @@ -637,14 +641,14 @@ g_mutex_lock(mp->lock); m(printf("wait: got pipe\n")); #ifdef HAVE_NSS - } else if (mp->prpipe.read != NULL) { + } else if (mp->prpipe.fd.read != NULL) { PRPollDesc polltable[1]; int retry; m(printf("wait: waitng on pr pipe\n")); g_mutex_unlock(mp->lock); do { - polltable[0].fd = mp->prpipe.read; + polltable[0].fd = mp->prpipe.fd.read; polltable[0].in_flags = PR_POLL_READ|PR_POLL_ERR; retry = PR_Poll(polltable, 1, PR_INTERVAL_NO_TIMEOUT) == -1 && PR_GetError() == PR_PENDING_INTERRUPT_ERROR; pthread_testcancel(); @@ -681,9 +685,9 @@ if (mp->pipe.fd.read != -1) E_READ(mp->pipe.fd.read, dummy, 1); #ifdef HAVE_NSS - if (mp->prpipe.read != NULL) { + if (mp->prpipe.fd.read != NULL) { int c; - c = PR_Read(mp->prpipe.read, dummy, 1); + c = PR_Read(mp->prpipe.fd.read, dummy, 1); g_assert(c == 1); } #endif ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-commit-unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit-help@opensuse.org