diff options
author | kwm <kwm@df743ca5-7f9a-e211-a948-0013205c9059> | 2005-04-27 00:40:29 +0800 |
---|---|---|
committer | kwm <kwm@df743ca5-7f9a-e211-a948-0013205c9059> | 2005-04-27 00:40:29 +0800 |
commit | 9e1e75f9beadac81329e80348bdc90ece750bd23 (patch) | |
tree | 7fa9d0d33e393fa9445907dfdac156ad809cdcfb /databases/evolution-data-server/files | |
parent | ab857116c90d26e79ef8c6d21e4dbcf2e3dfd7b2 (diff) | |
download | marcuscom-ports-9e1e75f9beadac81329e80348bdc90ece750bd23.tar marcuscom-ports-9e1e75f9beadac81329e80348bdc90ece750bd23.tar.gz marcuscom-ports-9e1e75f9beadac81329e80348bdc90ece750bd23.tar.bz2 marcuscom-ports-9e1e75f9beadac81329e80348bdc90ece750bd23.tar.lz marcuscom-ports-9e1e75f9beadac81329e80348bdc90ece750bd23.tar.xz marcuscom-ports-9e1e75f9beadac81329e80348bdc90ece750bd23.tar.zst marcuscom-ports-9e1e75f9beadac81329e80348bdc90ece750bd23.zip |
Readd e-d-s and update to version 1.3.1.
git-svn-id: svn://creme-brulee.marcuscom.com/ports/trunk@3950 df743ca5-7f9a-e211-a948-0013205c9059
Diffstat (limited to 'databases/evolution-data-server/files')
9 files changed, 664 insertions, 0 deletions
diff --git a/databases/evolution-data-server/files/extra-patch-libedataserver_e-msgport.c b/databases/evolution-data-server/files/extra-patch-libedataserver_e-msgport.c new file mode 100644 index 000000000..7383f939f --- /dev/null +++ b/databases/evolution-data-server/files/extra-patch-libedataserver_e-msgport.c @@ -0,0 +1,52 @@ +--- libedataserver/e-msgport.c.orig Thu Dec 2 22:33:06 2004 ++++ libedataserver/e-msgport.c Wed Mar 9 14:31:46 2005 +@@ -921,9 +921,18 @@ + void e_thread_put(EThread *e, EMsg *msg) + { + pthread_t id; ++ pthread_attr_t attr; + EMsg *dmsg = NULL; + + pthread_mutex_lock(&e->mutex); ++ pthread_attr_init(&attr); ++ /* Give us a 1 MB thread stacksize on 32-bit architectures, and ++ * a 2 MB thread stacksize on 64-bit architectures. */ ++ if (sizeof (void *) == 8) { ++ pthread_attr_setstacksize(&attr, 0x200000); ++ } else { ++ pthread_attr_setstacksize(&attr, 0x100000); ++ } + + /* the caller forgot to tell us what to do, well, we can't do anything can we */ + if (e->received == NULL) { +@@ -962,13 +971,14 @@ + e_msgport_put(e->server_port, msg); + if (e->waiting == 0 + && g_list_length(e->id_list) < e->queue_limit +- && pthread_create(&id, NULL, thread_dispatch, e) == 0) { ++ && pthread_create(&id, &attr, thread_dispatch, e) == 0) { + struct _thread_info *info = g_malloc0(sizeof(*info)); + t(printf("created NEW thread %ld\n", id)); + info->id = id; + info->busy = TRUE; + e->id_list = g_list_append(e->id_list, info); + } ++ pthread_attr_destroy(&attr); + pthread_mutex_unlock(&e->mutex); + return; + } +@@ -977,12 +987,13 @@ + if (e->id == E_THREAD_NONE) { + int err; + +- if ((err = pthread_create(&e->id, NULL, thread_dispatch, e)) != 0) { ++ if ((err = pthread_create(&e->id, &attr, thread_dispatch, e)) != 0) { + g_warning("Could not create dispatcher thread, message queued?: %s", strerror(err)); + e->id = E_THREAD_NONE; + } + } + ++ pthread_attr_destroy(&attr); + pthread_mutex_unlock(&e->mutex); + + if (dmsg) { diff --git a/databases/evolution-data-server/files/patch-calendar_libical_configure b/databases/evolution-data-server/files/patch-calendar_libical_configure new file mode 100644 index 000000000..19028e5d4 --- /dev/null +++ b/databases/evolution-data-server/files/patch-calendar_libical_configure @@ -0,0 +1,11 @@ +--- calendar/libical/configure.orig Sun Dec 26 16:54:57 2004 ++++ calendar/libical/configure Sun Dec 26 16:55:23 2004 +@@ -19736,7 +19736,7 @@ + + + +-if test "x$USE_MAINTAINER_MODE" == xyes; then ++if test "x$USE_MAINTAINER_MODE" = xyes; then + DEV="yes" + echo "$as_me:$LINENO: result: Setting up for development: -Wall, flex, bison" >&5 + echo "${ECHO_T}Setting up for development: -Wall, flex, bison" >&6 diff --git a/databases/evolution-data-server/files/patch-camel_Makefile.in b/databases/evolution-data-server/files/patch-camel_Makefile.in new file mode 100644 index 000000000..dfd4f33f6 --- /dev/null +++ b/databases/evolution-data-server/files/patch-camel_Makefile.in @@ -0,0 +1,11 @@ +--- camel/Makefile.in.orig Tue Dec 21 13:46:00 2004 ++++ camel/Makefile.in Tue Dec 21 13:46:01 2004 +@@ -299,7 +299,7 @@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ + +-SUBDIRS = . providers tests ++SUBDIRS = . providers + + pkgconfigdir = $(prefix)/libdata/pkgconfig + pkgconfig_in_files = camel.pc.in camel-provider.pc.in diff --git a/databases/evolution-data-server/files/patch-camel_camel-net-utils.c b/databases/evolution-data-server/files/patch-camel_camel-net-utils.c new file mode 100644 index 000000000..17bddca39 --- /dev/null +++ b/databases/evolution-data-server/files/patch-camel_camel-net-utils.c @@ -0,0 +1,24 @@ +--- camel/camel-net-utils.c.orig Tue Dec 21 13:38:52 2004 ++++ camel/camel-net-utils.c Tue Dec 21 13:40:34 2004 +@@ -143,12 +143,21 @@ + case EAI_SERVICE: + return NO_DATA; + break; ++#ifdef EAI_ADDRFAMILY + case EAI_ADDRFAMILY: + return NO_ADDRESS; + break; ++#endif ++#if defined(EAI_NODATA) && EAI_NODATA != EAI_NONAME + case EAI_NODATA: + return NO_DATA; + break; ++#endif ++#ifdef EAI_NOFAMILY ++ case EAI_NOFAMILY: ++ return NO_ADDRESS; ++ break; ++#endif + case EAI_MEMORY: + return ENOMEM; + break; diff --git a/databases/evolution-data-server/files/patch-configure b/databases/evolution-data-server/files/patch-configure new file mode 100644 index 000000000..7bc7a9cdf --- /dev/null +++ b/databases/evolution-data-server/files/patch-configure @@ -0,0 +1,41 @@ +--- configure.orig Tue Dec 21 13:46:01 2004 ++++ configure Tue Dec 21 13:50:02 2004 +@@ -7894,10 +7894,10 @@ + Example: --with-nspr-libs=/usr/lib" >&2;} + { (exit 1); exit 1; }; } + else +- nsprlibs="-ldl $with_nspr_libs/libplc4.a $with_nspr_libs/libplds4.a $with_nspr_libs/libnspr4.a $PTHREAD_LIB" ++ nsprlibs="$with_nspr_libs/libplc4.a $with_nspr_libs/libplds4.a $with_nspr_libs/libnspr4.a $PTHREAD_LIB" + fi + else +- nsprlibs="-ldl -lplc4 -lplds4 -lnspr4 $PTHREAD_LIB" ++ nsprlibs="-lplc4 -lplds4 -lnspr4 $PTHREAD_LIB" + fi + + echo "$as_me:$LINENO: checking for Mozilla nspr libraries" >&5 +@@ -10011,6 +10011,7 @@ + #include <sys/socket.h> + #include <netinet/in.h> + #include <netdb.h> ++ #include <stdio.h> + + + int +@@ -10777,7 +10778,7 @@ + LDFLAGS_save="$LDFLAGS" + + mitlibs="-lkrb5 -lk5crypto -lcom_err -lgssapi_krb5" +- heimlibs="-lkrb5 -lcrypto -lasn1 -lcom_err -lroken -lgssapi" ++ heimlibs="-lkrb5 -lcrypto -lasn1 -lcom_err -lroken -lgssapi -lcrypt" + echo "$as_me:$LINENO: checking for Kerberos 5" >&5 + echo $ECHO_N "checking for Kerberos 5... $ECHO_C" >&6 + if test "${ac_cv_lib_kerberos5+set}" = set; then +@@ -29833,7 +29834,7 @@ + idldir="$datadir/idl/evolution-data-server-$BASE_VERSION" + + +-serverdir="$libdir/bonobo/servers" ++serverdir="$prefix/libdata/bonobo/servers" + + + extensiondir='${privlibdir}'/extensions diff --git a/databases/evolution-data-server/files/patch-libedataserverui_e-source-option-menu.c b/databases/evolution-data-server/files/patch-libedataserverui_e-source-option-menu.c new file mode 100644 index 000000000..62532da02 --- /dev/null +++ b/databases/evolution-data-server/files/patch-libedataserverui_e-source-option-menu.c @@ -0,0 +1,11 @@ +--- libedataserverui/e-source-option-menu.c.orig Tue Nov 23 13:50:14 2004 ++++ libedataserverui/e-source-option-menu.c Tue Nov 23 13:50:33 2004 +@@ -24,6 +24,8 @@ + #include <config.h> + #endif + ++#include <sys/types.h> ++ + #include <gtk/gtkmenu.h> + #include <gtk/gtkmenuitem.h> + diff --git a/databases/evolution-data-server/files/patch-offical-sleepycat b/databases/evolution-data-server/files/patch-offical-sleepycat new file mode 100644 index 000000000..0cd4d7909 --- /dev/null +++ b/databases/evolution-data-server/files/patch-offical-sleepycat @@ -0,0 +1,480 @@ +--- libdb/fileops/fop_util.c.orig Thu Nov 20 23:13:30 2003 ++++ libdb/fileops/fop_util.c Fri Mar 18 20:31:10 2005 +@@ -40,7 +40,7 @@ + u_int32_t __lockval; \ + \ + if (LOCKING_ON((ENV))) { \ +- __lockval = 0; \ ++ __lockval = 1; \ + __dbt.data = &__lockval; \ + __dbt.size = sizeof(__lockval); \ + if ((ret = (ENV)->lock_get((ENV), (ID), \ +--- libdb/dbinc/mp.h.orig Thu Nov 20 23:13:17 2003 ++++ libdb/dbinc/mp.h Fri Mar 18 20:31:14 2005 +@@ -149,6 +149,13 @@ + * region lock). + */ + DB_MPOOL_STAT stat; /* Per-cache mpool statistics. */ ++ ++ /* ++ * We track page puts so that we can decide when allocation is never ++ * going to succeed. We don't lock the field, all we care about is ++ * if it changes. ++ */ ++ u_int32_t put_counter; /* Count of page put calls. */ + }; + + struct __db_mpool_hash { +--- libdb/mp/mp_fput.c.orig Thu Nov 20 23:13:36 2003 ++++ libdb/mp/mp_fput.c Fri Mar 18 20:31:14 2005 +@@ -19,6 +19,8 @@ + #include "dbinc/db_shash.h" + #include "dbinc/mp.h" + ++static void __memp_reset_lru __P((DB_ENV *, REGINFO *)); ++ + /* + * __memp_fput -- + * Mpool file put function. +@@ -198,5 +200,56 @@ + + MUTEX_UNLOCK(dbenv, &hp->hash_mutex); + ++ /* ++ * On every buffer put we update the buffer generation number and check ++ * for wraparound. ++ */ ++ if (++c_mp->lru_count == UINT32_T_MAX) ++ __memp_reset_lru(dbenv, dbmp->reginfo); ++ + return (0); ++} ++ ++/* ++ * __memp_reset_lru -- ++ * Reset the cache LRU counter. ++ */ ++static void ++__memp_reset_lru(dbenv, memreg) ++ DB_ENV *dbenv; ++ REGINFO *memreg; ++{ ++ BH *bhp; ++ DB_MPOOL_HASH *hp; ++ MPOOL *c_mp; ++ int bucket; ++ ++ c_mp = memreg->primary; ++ ++ /* ++ * Update the counter so all future allocations will start at the ++ * bottom. ++ */ ++ c_mp->lru_count -= MPOOL_BASE_DECREMENT; ++ ++ /* Adjust the priority of every buffer in the system. */ ++ for (hp = R_ADDR(memreg, c_mp->htab), ++ bucket = 0; bucket < c_mp->htab_buckets; ++hp, ++bucket) { ++ /* ++ * Skip empty buckets. ++ * ++ * We can check for empty buckets before locking as we ++ * only care if the pointer is zero or non-zero. ++ */ ++ if (SH_TAILQ_FIRST(&hp->hash_bucket, __bh) == NULL) ++ continue; ++ ++ MUTEX_LOCK(dbenv, &hp->hash_mutex); ++ for (bhp = SH_TAILQ_FIRST(&hp->hash_bucket, __bh); ++ bhp != NULL; bhp = SH_TAILQ_NEXT(bhp, hq, __bh)) ++ if (bhp->priority != UINT32_T_MAX && ++ bhp->priority > MPOOL_BASE_DECREMENT) ++ bhp->priority -= MPOOL_BASE_DECREMENT; ++ MUTEX_UNLOCK(dbenv, &hp->hash_mutex); ++ } + } +--- libdb/mp/mp_alloc.c.orig Thu Nov 20 23:13:36 2003 ++++ libdb/mp/mp_alloc.c Fri Mar 18 20:31:14 2005 +@@ -25,7 +25,6 @@ + } HS; + + static void __memp_bad_buffer __P((DB_MPOOL_HASH *)); +-static void __memp_reset_lru __P((DB_ENV *, REGINFO *, MPOOL *)); + + /* + * __memp_alloc -- +@@ -50,8 +49,9 @@ + MPOOL *c_mp; + MPOOLFILE *bh_mfp; + size_t freed_space; +- u_int32_t buckets, buffers, high_priority, max_na, priority; +- int aggressive, ret; ++ u_int32_t buckets, buffers, high_priority, priority, put_counter; ++ u_int32_t total_buckets; ++ int aggressive, giveup, ret; + void *p; + + dbenv = dbmp->dbenv; +@@ -59,18 +59,13 @@ + dbht = R_ADDR(memreg, c_mp->htab); + hp_end = &dbht[c_mp->htab_buckets]; + +- buckets = buffers = 0; +- aggressive = 0; ++ buckets = buffers = put_counter = total_buckets = 0; ++ aggressive = giveup = 0; ++ hp_tmp = NULL; + + c_mp->stat.st_alloc++; + + /* +- * Get aggressive if we've tried to flush the number of pages as are +- * in the system without finding space. +- */ +- max_na = 5 * c_mp->htab_buckets; +- +- /* + * If we're allocating a buffer, and the one we're discarding is the + * same size, we don't want to waste the time to re-integrate it into + * the shared memory free list. If the DB_MPOOLFILE argument isn't +@@ -81,19 +76,10 @@ + len = (sizeof(BH) - sizeof(u_int8_t)) + mfp->stat.st_pagesize; + + R_LOCK(dbenv, memreg); +- +- /* +- * On every buffer allocation we update the buffer generation number +- * and check for wraparound. +- */ +- if (++c_mp->lru_count == UINT32_T_MAX) +- __memp_reset_lru(dbenv, memreg, c_mp); +- + /* + * Anything newer than 1/10th of the buffer pool is ignored during + * allocation (unless allocation starts failing). + */ +- DB_ASSERT(c_mp->lru_count > c_mp->stat.st_pages / 10); + high_priority = c_mp->lru_count - c_mp->stat.st_pages / 10; + + /* +@@ -120,10 +106,11 @@ + * We're not holding the region locked here, these statistics + * can't be trusted. + */ +- if (buckets != 0) { +- if (buckets > c_mp->stat.st_alloc_max_buckets) +- c_mp->stat.st_alloc_max_buckets = buckets; +- c_mp->stat.st_alloc_buckets += buckets; ++ total_buckets += buckets; ++ if (total_buckets != 0) { ++ if (total_buckets > c_mp->stat.st_alloc_max_buckets) ++ c_mp->stat.st_alloc_max_buckets = total_buckets; ++ c_mp->stat.st_alloc_buckets += total_buckets; + } + if (buffers != 0) { + if (buffers > c_mp->stat.st_alloc_max_pages) +@@ -131,6 +118,12 @@ + c_mp->stat.st_alloc_pages += buffers; + } + return (0); ++ } else if (giveup || c_mp->stat.st_pages == 0) { ++ R_UNLOCK(dbenv, memreg); ++ ++ __db_err(dbenv, ++ "unable to allocate space from the buffer cache"); ++ return (ret); + } + + /* +@@ -138,26 +131,24 @@ + * we need. Reset our free-space counter. + */ + freed_space = 0; ++ total_buckets += buckets; ++ buckets = 0; + + /* + * Walk the hash buckets and find the next two with potentially useful + * buffers. Free the buffer with the lowest priority from the buckets' + * chains. + */ +- for (hp_tmp = NULL;;) { ++ for (;;) { ++ /* All pages have been freed, make one last try */ ++ if (c_mp->stat.st_pages == 0) ++ goto alloc; ++ + /* Check for wrap around. */ + hp = &dbht[c_mp->last_checked++]; + if (hp >= hp_end) { + c_mp->last_checked = 0; +- +- /* +- * If we've gone through all of the hash buckets, try +- * an allocation. If the cache is small, the old page +- * size is small, and the new page size is large, we +- * might have freed enough memory (but not 3 times the +- * memory). +- */ +- goto alloc; ++ hp = &dbht[c_mp->last_checked++]; + } + + /* +@@ -172,39 +163,59 @@ + /* + * The failure mode is when there are too many buffers we can't + * write or there's not enough memory in the system. We don't +- * have a metric for deciding if allocation has no possible way +- * to succeed, so we don't ever fail, we assume memory will be +- * available if we wait long enough. ++ * have a way to know that allocation has no way to succeed. ++ * We fail if there were no pages returned to the cache after ++ * we've been trying for a relatively long time. + * +- * Get aggressive if we've tried to flush 5 times the number of +- * hash buckets as are in the system -- it's possible we have +- * been repeatedly trying to flush the same buffers, although +- * it's unlikely. Aggressive means: ++ * Get aggressive if we've tried to flush the number of hash ++ * buckets as are in the system and have not found any more ++ * space. Aggressive means: + * + * a: set a flag to attempt to flush high priority buffers as + * well as other buffers. + * b: sync the mpool to force out queue extent pages. While we + * might not have enough space for what we want and flushing + * is expensive, why not? +- * c: sleep for a second -- hopefully someone else will run and +- * free up some memory. Try to allocate memory too, in case +- * the other thread returns its memory to the region. +- * d: look at a buffer in every hash bucket rather than choose ++ * c: look at a buffer in every hash bucket rather than choose + * the more preferable of two. ++ * d: start to think about giving up. ++ * ++ * If we get here twice, sleep for a second, hopefully someone ++ * else will run and free up some memory. ++ * ++ * Always try to allocate memory too, in case some other thread ++ * returns its memory to the region. + * + * !!! + * This test ignores pathological cases like no buffers in the + * system -- that shouldn't be possible. + */ +- if ((++buckets % max_na) == 0) { +- aggressive = 1; +- ++ if ((++buckets % c_mp->htab_buckets) == 0) { ++ if (freed_space > 0) ++ goto alloc; + R_UNLOCK(dbenv, memreg); + +- (void)__memp_sync_int( +- dbenv, NULL, 0, DB_SYNC_ALLOC, NULL); +- +- (void)__os_sleep(dbenv, 1, 0); ++ switch (++aggressive) { ++ case 1: ++ break; ++ case 2: ++ put_counter = c_mp->put_counter; ++ /* FALLTHROUGH */ ++ case 3: ++ case 4: ++ case 5: ++ case 6: ++ (void)__memp_sync_int( ++ dbenv, NULL, 0, DB_SYNC_ALLOC, NULL); ++ ++ (void)__os_sleep(dbenv, 1, 0); ++ break; ++ default: ++ aggressive = 1; ++ if (put_counter == c_mp->put_counter) ++ giveup = 1; ++ break; ++ } + + R_LOCK(dbenv, memreg); + goto alloc; +@@ -277,7 +288,8 @@ + * thread may have acquired this buffer and incremented the ref + * count after we wrote it, in which case we can't have it. + * +- * If there's a write error, avoid selecting this buffer again ++ * If there's a write error and we're having problems finding ++ * something to allocate, avoid selecting this buffer again + * by making it the bucket's least-desirable buffer. + */ + if (ret != 0 || bhp->ref != 0) { +@@ -301,6 +313,8 @@ + + freed_space += __db_shsizeof(bhp); + __memp_bhfree(dbmp, hp, bhp, 1); ++ if (aggressive > 1) ++ aggressive = 1; + + /* + * Unlock this hash bucket and re-acquire the region lock. If +@@ -360,54 +374,6 @@ + + /* Reset the hash bucket's priority. */ + hp->hash_priority = SH_TAILQ_FIRST(&hp->hash_bucket, __bh)->priority; +-} +- +-/* +- * __memp_reset_lru -- +- * Reset the cache LRU counter. +- */ +-static void +-__memp_reset_lru(dbenv, memreg, c_mp) +- DB_ENV *dbenv; +- REGINFO *memreg; +- MPOOL *c_mp; +-{ +- BH *bhp; +- DB_MPOOL_HASH *hp; +- int bucket; +- +- /* +- * Update the counter so all future allocations will start at the +- * bottom. +- */ +- c_mp->lru_count -= MPOOL_BASE_DECREMENT; +- +- /* Release the region lock. */ +- R_UNLOCK(dbenv, memreg); +- +- /* Adjust the priority of every buffer in the system. */ +- for (hp = R_ADDR(memreg, c_mp->htab), +- bucket = 0; bucket < c_mp->htab_buckets; ++hp, ++bucket) { +- /* +- * Skip empty buckets. +- * +- * We can check for empty buckets before locking as we +- * only care if the pointer is zero or non-zero. +- */ +- if (SH_TAILQ_FIRST(&hp->hash_bucket, __bh) == NULL) +- continue; +- +- MUTEX_LOCK(dbenv, &hp->hash_mutex); +- for (bhp = SH_TAILQ_FIRST(&hp->hash_bucket, __bh); +- bhp != NULL; bhp = SH_TAILQ_NEXT(bhp, hq, __bh)) +- if (bhp->priority != UINT32_T_MAX && +- bhp->priority > MPOOL_BASE_DECREMENT) +- bhp->priority -= MPOOL_BASE_DECREMENT; +- MUTEX_UNLOCK(dbenv, &hp->hash_mutex); +- } +- +- /* Reacquire the region lock. */ +- R_LOCK(dbenv, memreg); + } + + #ifdef DIAGNOSTIC +--- libdb/dbreg/dbreg_rec.c.orig Thu Nov 20 23:13:19 2003 ++++ libdb/dbreg/dbreg_rec.c Fri Mar 18 20:31:14 2005 +@@ -174,19 +174,20 @@ + * Typically, closes should match an open which means + * that if this is a close, there should be a valid + * entry in the dbentry table when we get here, +- * however there is an exception. If this is an ++ * however there are exceptions. 1. If this is an + * OPENFILES pass, then we may have started from + * a log file other than the first, and the + * corresponding open appears in an earlier file. +- * We can ignore that case, but all others are errors. ++ * 2. If we are undoing an open on an abort or ++ * recovery, it's possible that we failed after ++ * the log record, but before we actually entered ++ * a handle here. + */ + dbe = &dblp->dbentry[argp->fileid]; + if (dbe->dbp == NULL && !dbe->deleted) { + /* No valid entry here. */ +- if ((argp->opcode != LOG_CLOSE && +- argp->opcode != LOG_RCLOSE) || +- (op != DB_TXN_OPENFILES && +- op !=DB_TXN_POPENFILES)) { ++ if (DB_REDO(op) || ++ argp->opcode == LOG_CHECKPOINT) { + __db_err(dbenv, + "Improper file close at %lu/%lu", + (u_long)lsnp->file, +--- libdb/env/env_recover.c.orig Thu Nov 20 23:13:20 2003 ++++ libdb/env/env_recover.c Fri Mar 18 20:31:14 2005 +@@ -232,12 +232,9 @@ + * we'll still need to do a vtruncate based on information we haven't + * yet collected. + */ +- if (ret == DB_NOTFOUND) { ++ if (ret == DB_NOTFOUND) + ret = 0; +- if (max_lsn == NULL) +- goto done; +- } +- if (ret != 0) ++ else if (ret != 0) + goto err; + + hi_txn = txnid; +@@ -331,7 +328,7 @@ + + /* Find a low txnid. */ + ret = 0; +- do { ++ if (hi_txn != 0) do { + /* txnid is after rectype, which is a u_int32. */ + memcpy(&txnid, + (u_int8_t *)data.data + sizeof(u_int32_t), sizeof(txnid)); +@@ -344,11 +341,8 @@ + * There are no transactions and we're not recovering to an LSN (see + * above), so there is nothing to do. + */ +- if (ret == DB_NOTFOUND) { ++ if (ret == DB_NOTFOUND) + ret = 0; +- if (max_lsn == NULL) +- goto done; +- } + + /* Reset to the first lsn. */ + if (ret != 0 || (ret = logc->get(logc, &first_lsn, &data, DB_SET)) != 0) +@@ -367,6 +361,10 @@ + txninfo, &data, &first_lsn, &last_lsn, nfiles, 1)) != 0) + goto err; + ++ /* If there were no transactions, then we can bail out early. */ ++ if (hi_txn == 0 && max_lsn == NULL) ++ goto done; ++ + /* + * Pass #2. + * +@@ -483,6 +481,7 @@ + if ((ret = __dbreg_close_files(dbenv)) != 0) + goto err; + ++done: + if (max_lsn != NULL) { + region->last_ckp = ((DB_TXNHEAD *)txninfo)->ckplsn; + +@@ -538,7 +537,8 @@ + __db_err(dbenv, "Recovery complete at %.24s", ctime(&now)); + __db_err(dbenv, "%s %lx %s [%lu][%lu]", + "Maximum transaction ID", +- ((DB_TXNHEAD *)txninfo)->maxid, ++ txninfo == NULL ? TXN_MINIMUM : ++ ((DB_TXNHEAD *)txninfo)->maxid, + "Recovery checkpoint", + (u_long)region->last_ckp.file, + (u_long)region->last_ckp.offset); +@@ -550,7 +550,6 @@ + (u_long)lsn.file, (u_long)lsn.offset, pass); + } + +-done: + err: if (lockid != DB_LOCK_INVALIDID) { + if ((t_ret = __rep_unlockpages(dbenv, lockid)) != 0 && ret == 0) + ret = t_ret; diff --git a/databases/evolution-data-server/files/patch-servers_groupwise_e-gw-connection.c b/databases/evolution-data-server/files/patch-servers_groupwise_e-gw-connection.c new file mode 100644 index 000000000..576ecea6a --- /dev/null +++ b/databases/evolution-data-server/files/patch-servers_groupwise_e-gw-connection.c @@ -0,0 +1,12 @@ +--- servers/groupwise/e-gw-connection.c.orig Tue Mar 8 03:50:29 2005 ++++ servers/groupwise/e-gw-connection.c Tue Mar 8 03:50:40 2005 +@@ -1764,8 +1764,8 @@ + EGwConnectionPrivate *priv; + SoupSoapParameter *param, *subparam, *second_level_child; + char *id, *name; +- g_return_val_if_fail (E_IS_GW_CONNECTION (cnc), E_GW_CONNECTION_STATUS_INVALID_OBJECT); + static GStaticMutex connecting = G_STATIC_MUTEX_INIT; ++ g_return_val_if_fail (E_IS_GW_CONNECTION (cnc), E_GW_CONNECTION_STATUS_INVALID_OBJECT); + + priv = cnc->priv; + g_static_mutex_lock (&connecting); diff --git a/databases/evolution-data-server/files/patch-servers_groupwise_e-gw-item.c b/databases/evolution-data-server/files/patch-servers_groupwise_e-gw-item.c new file mode 100644 index 000000000..c865775da --- /dev/null +++ b/databases/evolution-data-server/files/patch-servers_groupwise_e-gw-item.c @@ -0,0 +1,22 @@ +--- servers/groupwise/e-gw-item.c.orig Tue Jan 25 20:31:45 2005 ++++ servers/groupwise/e-gw-item.c Tue Jan 25 20:32:28 2005 +@@ -2604,8 +2604,8 @@ + + /*attachments*/ + if (priv->attach_list) { +- soup_soap_message_start_element (msg, "attachments", NULL, NULL) ; + GSList *al ; ++ soup_soap_message_start_element (msg, "attachments", NULL, NULL) ; + for (al = priv->attach_list ; al != NULL ; al = al->next) { + EGwItemAttachment *attachment = (EGwItemAttachment *)al->data ; + add_attachment_to_soap_message (attachment, msg) ; +@@ -2669,8 +2669,8 @@ + + /*attachments*/ + if (priv->attach_list) { +- soup_soap_message_start_element (msg, "attachments", NULL, NULL) ; + GSList *al ; ++ soup_soap_message_start_element (msg, "attachments", NULL, NULL) ; + for (al = priv->attach_list ; al != NULL ; al = al->next) { + EGwItemAttachment *attachment = (EGwItemAttachment *)al->data ; + add_attachment_to_soap_message (attachment, msg) ; |