From 92d0f4e3fd0e7e9352951abe9076a5e587883d248e0b545a60736f283fad5c41 Mon Sep 17 00:00:00 2001 From: Ralf Haferkamp Date: Tue, 28 Feb 2012 07:37:37 +0000 Subject: [PATCH] Accepting request 107196 from home:rhafer:branches:network:ldap update to 2.4.29 OBS-URL: https://build.opensuse.org/request/show/107196 OBS-URL: https://build.opensuse.org/package/show/network:ldap/openldap2?expand=0&rev=81 --- 0001-build-adjustments.dif | 6 +- 0002-slapd.conf.dif | 2 +- 0003-LDAPI-socket-location.dif | 4 +- 0004-libldap-use-gethostbyname_r.dif | 4 +- 0005-pie-compile.dif | 16 +- 0006-No-Build-date-and-time-in-binaries.dif | 4 +- 0007-Recover-on-DB-version-change.dif | 4 +- 0008-syncrepl-fixes-post-2.4.29.dif | 227 ++++++++++++++++++ ...-only-poll-sockets-for-write-as-needed.dif | 114 +++++++++ openldap-2.4.28.tgz | 3 - openldap-2.4.29.tgz | 3 + openldap2-client.changes | 26 ++ openldap2-client.spec | 8 +- openldap2.changes | 26 ++ openldap2.spec | 8 +- 15 files changed, 428 insertions(+), 27 deletions(-) create mode 100644 0008-syncrepl-fixes-post-2.4.29.dif create mode 100644 0009-ITS-7167-only-poll-sockets-for-write-as-needed.dif delete mode 100644 openldap-2.4.28.tgz create mode 100644 openldap-2.4.29.tgz diff --git a/0001-build-adjustments.dif b/0001-build-adjustments.dif index 77bd9a1..03fceea 100644 --- a/0001-build-adjustments.dif +++ b/0001-build-adjustments.dif @@ -1,4 +1,4 @@ -From ada0d25f62670b502166ce05fce29beb9d86ce96 Mon Sep 17 00:00:00 2001 +From e5b00828fc947aea5c6498ffffd4bfc29540c159 Mon Sep 17 00:00:00 2001 From: Ralf Haferkamp Date: Wed, 16 Jun 2010 14:04:07 +0200 Subject: build-adjustments @@ -7,7 +7,7 @@ Subject: build-adjustments - don't use automake macro diff --git a/build/top.mk b/build/top.mk -index 66ac3bf..f09e0c3 100644 +index 14e291e..633c9a4 100644 --- a/build/top.mk +++ b/build/top.mk @@ -40,7 +40,7 @@ libdir = @libdir@ @@ -20,7 +20,7 @@ index 66ac3bf..f09e0c3 100644 sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@$(ldap_subdir) diff --git a/configure.in b/configure.in -index e7e5a7e..ef9d4f5 100644 +index 5d7d475..f12463e 100644 --- a/configure.in +++ b/configure.in @@ -69,7 +69,9 @@ dnl Determine host platform diff --git a/0002-slapd.conf.dif b/0002-slapd.conf.dif index dd8d75a..de21549 100644 --- a/0002-slapd.conf.dif +++ b/0002-slapd.conf.dif @@ -1,4 +1,4 @@ -From dc422b3d677b7bb9c0699d40623def4dc93d54f0 Mon Sep 17 00:00:00 2001 +From e5dae6859ae9179c636531c94d1f86ba8821d4cc Mon Sep 17 00:00:00 2001 From: Ralf Haferkamp Date: Wed, 16 Jun 2010 14:05:49 +0200 Subject: slapd.conf diff --git a/0003-LDAPI-socket-location.dif b/0003-LDAPI-socket-location.dif index d13a430..877a1f0 100644 --- a/0003-LDAPI-socket-location.dif +++ b/0003-LDAPI-socket-location.dif @@ -1,11 +1,11 @@ -From daab8464b7e9269012c22566ff8406122cc1f19b Mon Sep 17 00:00:00 2001 +From 530f1d6f5af77523f041657021d49b177863861d Mon Sep 17 00:00:00 2001 From: Ralf Haferkamp Date: Wed, 16 Jun 2010 14:06:42 +0200 Subject: LDAPI socket location diff --git a/include/ldap_defaults.h b/include/ldap_defaults.h -index 426d7f6..9a21f98 100644 +index 9dba666..b9780bc 100644 --- a/include/ldap_defaults.h +++ b/include/ldap_defaults.h @@ -39,7 +39,7 @@ diff --git a/0004-libldap-use-gethostbyname_r.dif b/0004-libldap-use-gethostbyname_r.dif index f7b3c47..1b36b21 100644 --- a/0004-libldap-use-gethostbyname_r.dif +++ b/0004-libldap-use-gethostbyname_r.dif @@ -1,11 +1,11 @@ -From ae570a81db3e070d0c449fe9eb70352c8ffcf22a Mon Sep 17 00:00:00 2001 +From 3f733c7f1da53e613cf6d20f3886a679614a2d26 Mon Sep 17 00:00:00 2001 From: Ralf Haferkamp Date: Wed, 16 Jun 2010 14:08:03 +0200 Subject: libldap use gethostbyname_r diff --git a/libraries/libldap/util-int.c b/libraries/libldap/util-int.c -index f0b5f72..ea5e178 100644 +index 85f13fc..60f640a 100644 --- a/libraries/libldap/util-int.c +++ b/libraries/libldap/util-int.c @@ -52,7 +52,7 @@ extern int h_errno; diff --git a/0005-pie-compile.dif b/0005-pie-compile.dif index 61a7bd5..e343e55 100644 --- a/0005-pie-compile.dif +++ b/0005-pie-compile.dif @@ -1,11 +1,11 @@ -From ef2b8372346fd32c21a8b19864c2f29aed5e3e63 Mon Sep 17 00:00:00 2001 +From a40157559d5dc1658787d1cbbf5fa33a30d98880 Mon Sep 17 00:00:00 2001 From: Ralf Haferkamp Date: Fri, 12 Nov 2010 09:39:11 +0100 Subject: pie compile diff --git a/build/top.mk b/build/top.mk -index f09e0c3..3cb54c7 100644 +index 633c9a4..c67289d 100644 --- a/build/top.mk +++ b/build/top.mk @@ -107,7 +107,7 @@ LINK_LIBS = $(MOD_LIBS) $(@PLAT@_LINK_LIBS) @@ -36,7 +36,7 @@ index f09e0c3..3cb54c7 100644 LIBS = $(XLIBS) $(XXLIBS) $(AC_LIBS) $(XXXLIBS) diff --git a/servers/slapd/back-bdb/Makefile.in b/servers/slapd/back-bdb/Makefile.in -index 93dc9a6..7172e70 100644 +index da7da0c..dcb6d92 100644 --- a/servers/slapd/back-bdb/Makefile.in +++ b/servers/slapd/back-bdb/Makefile.in @@ -33,6 +33,8 @@ LDAP_LIBDIR= ../../../libraries @@ -49,7 +49,7 @@ index 93dc9a6..7172e70 100644 MOD_DEFS = $(@BUILD_BDB@_DEFS) MOD_LIBS = $(BDB_LIBS) diff --git a/servers/slapd/back-hdb/Makefile.in b/servers/slapd/back-hdb/Makefile.in -index 8f6236b..1d5ba5f 100644 +index 5af828f..6f43f7b 100644 --- a/servers/slapd/back-hdb/Makefile.in +++ b/servers/slapd/back-hdb/Makefile.in @@ -37,6 +37,8 @@ LDAP_LIBDIR= ../../../libraries @@ -62,7 +62,7 @@ index 8f6236b..1d5ba5f 100644 MOD_DEFS = $(@BUILD_HDB@_DEFS) MOD_LIBS = $(BDB_LIBS) diff --git a/servers/slapd/back-ldap/Makefile.in b/servers/slapd/back-ldap/Makefile.in -index 418447f..8d42e72 100644 +index 392d92e..3a0663d 100644 --- a/servers/slapd/back-ldap/Makefile.in +++ b/servers/slapd/back-ldap/Makefile.in @@ -26,6 +26,8 @@ LDAP_LIBDIR= ../../../libraries @@ -75,7 +75,7 @@ index 418447f..8d42e72 100644 MOD_DEFS = $(@BUILD_LDAP@_DEFS) diff --git a/servers/slapd/back-ldif/Makefile.in b/servers/slapd/back-ldif/Makefile.in -index a8b5a96..12fbaab 100644 +index 5e4abc1..1e8c454 100644 --- a/servers/slapd/back-ldif/Makefile.in +++ b/servers/slapd/back-ldif/Makefile.in @@ -22,6 +22,8 @@ LDAP_LIBDIR= ../../../libraries @@ -88,7 +88,7 @@ index a8b5a96..12fbaab 100644 MOD_DEFS = $(yes_DEFS) diff --git a/servers/slapd/back-monitor/Makefile.in b/servers/slapd/back-monitor/Makefile.in -index ddb474a..61e51b8 100644 +index 9aecdbc..11c962c 100644 --- a/servers/slapd/back-monitor/Makefile.in +++ b/servers/slapd/back-monitor/Makefile.in @@ -30,6 +30,8 @@ LDAP_LIBDIR= ../../../libraries @@ -101,7 +101,7 @@ index ddb474a..61e51b8 100644 MOD_DEFS = $(@BUILD_MONITOR@_DEFS) diff --git a/servers/slapd/back-relay/Makefile.in b/servers/slapd/back-relay/Makefile.in -index f93a84c..a35dd83 100644 +index 90ea4b3..ff2f429 100644 --- a/servers/slapd/back-relay/Makefile.in +++ b/servers/slapd/back-relay/Makefile.in @@ -22,6 +22,8 @@ LDAP_LIBDIR= ../../../libraries diff --git a/0006-No-Build-date-and-time-in-binaries.dif b/0006-No-Build-date-and-time-in-binaries.dif index 86ac1f1..a1ec545 100644 --- a/0006-No-Build-date-and-time-in-binaries.dif +++ b/0006-No-Build-date-and-time-in-binaries.dif @@ -1,4 +1,4 @@ -From b0508b1d0322491955d6ed11fc8c980f6a07dd18 Mon Sep 17 00:00:00 2001 +From a994bf2d5f145d52ce7351468b4b897a4f65d3a4 Mon Sep 17 00:00:00 2001 From: Cristian Rodriguez Date: Tue, 5 Oct 2010 13:59:40 +0200 Subject: No Build date and time in binaries @@ -7,7 +7,7 @@ This avoids build-compare failures and unhelpful rebuilds/republishes in the openSUSE buildservice. diff --git a/build/mkversion b/build/mkversion -index 5c020b8..0160ab1 100755 +index 3fd9565..dd9a998 100755 --- a/build/mkversion +++ b/build/mkversion @@ -50,7 +50,7 @@ if test $# != 1 ; then diff --git a/0007-Recover-on-DB-version-change.dif b/0007-Recover-on-DB-version-change.dif index 0029115..dabbed6 100644 --- a/0007-Recover-on-DB-version-change.dif +++ b/0007-Recover-on-DB-version-change.dif @@ -1,4 +1,4 @@ -From e17f4d8c705ffa9080fd2ca5cf6780e30d04b0ac Mon Sep 17 00:00:00 2001 +From ab9cfed7b0f7b77b9715ec01a267b523a12c63d0 Mon Sep 17 00:00:00 2001 From: Ralf Haferkamp Date: Tue, 5 Oct 2010 14:20:22 +0200 Subject: Recover on DB version change @@ -7,7 +7,7 @@ If the libdb Version changed try to recover the database. Note: This will only succeed if only the format of transaction logs changed. diff --git a/servers/slapd/back-bdb/init.c b/servers/slapd/back-bdb/init.c -index 526fee8..a9f7c5a 100644 +index ac5a6d5..fea5cb4 100644 --- a/servers/slapd/back-bdb/init.c +++ b/servers/slapd/back-bdb/init.c @@ -330,6 +330,13 @@ shm_retry: diff --git a/0008-syncrepl-fixes-post-2.4.29.dif b/0008-syncrepl-fixes-post-2.4.29.dif new file mode 100644 index 0000000..495c866 --- /dev/null +++ b/0008-syncrepl-fixes-post-2.4.29.dif @@ -0,0 +1,227 @@ +From 27f5cf4d4ebcef32c4102bbcc900b0d72383ddb9 Mon Sep 17 00:00:00 2001 +From: Howard Chu +Date: Sun, 12 Feb 2012 15:54:11 -0800 +Subject: syncrepl fixes post 2.4.29 + +ITS#6024 patch breaks MMR loop detection + +diff --git a/servers/slapd/overlays/syncprov.c b/servers/slapd/overlays/syncprov.c +index 8c6c296..e44c239 100644 +--- a/servers/slapd/overlays/syncprov.c ++++ b/servers/slapd/overlays/syncprov.c +@@ -822,7 +822,7 @@ syncprov_sendresp( Operation *op, opcookie *opc, syncops *so, int mode ) + { + SlapReply rs = { REP_SEARCH }; + LDAPControl *ctrls[2]; +- struct berval cookie = BER_BVNULL, csns[2]; ++ struct berval cookie, csns[2]; + Entry e_uuid = {0}; + Attribute a_uuid = {0}; + +@@ -830,19 +830,17 @@ syncprov_sendresp( Operation *op, opcookie *opc, syncops *so, int mode ) + return SLAPD_ABANDON; + + ctrls[1] = NULL; +- if ( !BER_BVISNULL( &opc->sctxcsn )) { +- csns[0] = opc->sctxcsn; +- BER_BVZERO( &csns[1] ); +- slap_compose_sync_cookie( op, &cookie, csns, so->s_rid, slap_serverID ? slap_serverID : -1 ); +- } ++ csns[0] = opc->sctxcsn; ++ BER_BVZERO( &csns[1] ); ++ slap_compose_sync_cookie( op, &cookie, csns, so->s_rid, slap_serverID ? slap_serverID : -1 ); + + #ifdef LDAP_DEBUG + if ( so->s_sid > 0 ) { + Debug( LDAP_DEBUG_SYNC, "syncprov_sendresp: to=%03x, cookie=%s\n", +- so->s_sid, cookie.bv_val ? cookie.bv_val : "", 0 ); ++ so->s_sid, cookie.bv_val, 0 ); + } else { + Debug( LDAP_DEBUG_SYNC, "syncprov_sendresp: cookie=%s\n", +- cookie.bv_val ? cookie.bv_val : "", 0, 0 ); ++ cookie.bv_val, 0, 0 ); + } + #endif + +@@ -851,9 +849,7 @@ syncprov_sendresp( Operation *op, opcookie *opc, syncops *so, int mode ) + a_uuid.a_nvals = &opc->suuid; + rs.sr_err = syncprov_state_ctrl( op, &rs, &e_uuid, + mode, ctrls, 0, 1, &cookie ); +- if ( !BER_BVISNULL( &cookie )) { +- op->o_tmpfree( cookie.bv_val, op->o_tmpmemctx ); +- } ++ op->o_tmpfree( cookie.bv_val, op->o_tmpmemctx ); + + rs.sr_ctrls = ctrls; + rs.sr_entry = &e_uuid; +diff --git a/servers/slapd/syncrepl.c b/servers/slapd/syncrepl.c +index 3938288..ff13ff9 100644 +--- a/servers/slapd/syncrepl.c ++++ b/servers/slapd/syncrepl.c +@@ -131,7 +131,7 @@ static int syncrepl_message_to_op( + syncinfo_t *, Operation *, LDAPMessage * ); + static int syncrepl_message_to_entry( + syncinfo_t *, Operation *, LDAPMessage *, +- Modifications **, Entry **, int ); ++ Modifications **, Entry **, int, struct berval* ); + static int syncrepl_entry( + syncinfo_t *, Operation*, Entry*, + Modifications**,int, struct berval*, +@@ -833,7 +833,7 @@ do_syncrep2( + tout_p, &msg ) ) > 0 ) + { + int match, punlock, syncstate; +- struct berval *retdata, syncUUID, cookie = BER_BVNULL; ++ struct berval *retdata, syncUUID[2], cookie = BER_BVNULL; + char *retoid; + LDAPControl **rctrls = NULL, *rctrlp = NULL; + BerVarray syncUUIDs; +@@ -885,7 +885,7 @@ do_syncrep2( + goto done; + } + ber_init2( ber, &rctrlp->ldctl_value, LBER_USE_DER ); +- if ( ber_scanf( ber, "{em" /*"}"*/, &syncstate, &syncUUID ) ++ if ( ber_scanf( ber, "{em" /*"}"*/, &syncstate, &syncUUID[0] ) + == LBER_ERROR ) { + bdn.bv_val[bdn.bv_len] = '\0'; + Debug( LDAP_DEBUG_ANY, "do_syncrep2: %s malformed message (%s)\n", +@@ -896,7 +896,7 @@ do_syncrep2( + } + /* FIXME: what if syncUUID is NULL or empty? + * (happens with back-sql...) */ +- if ( BER_BVISEMPTY( &syncUUID ) ) { ++ if ( BER_BVISEMPTY( &syncUUID[0] ) ) { + bdn.bv_val[bdn.bv_len] = '\0'; + Debug( LDAP_DEBUG_ANY, "do_syncrep2: %s " + "got empty syncUUID with LDAP_SYNC_%s (%s)\n", +@@ -1007,10 +1007,10 @@ do_syncrep2( + break; + } + } else if ( ( rc = syncrepl_message_to_entry( si, op, msg, +- &modlist, &entry, syncstate ) ) == LDAP_SUCCESS ) ++ &modlist, &entry, syncstate, syncUUID ) ) == LDAP_SUCCESS ) + { + if ( ( rc = syncrepl_entry( si, op, entry, &modlist, +- syncstate, &syncUUID, syncCookie.ctxcsn ) ) == LDAP_SUCCESS && ++ syncstate, syncUUID, syncCookie.ctxcsn ) ) == LDAP_SUCCESS && + syncCookie.ctxcsn ) + { + rc = syncrepl_updateCookie( si, op, &syncCookie ); +@@ -2415,7 +2415,8 @@ syncrepl_message_to_entry( + LDAPMessage *msg, + Modifications **modlist, + Entry **entry, +- int syncstate ++ int syncstate, ++ struct berval *syncUUID + ) + { + Entry *e = NULL; +@@ -2457,6 +2458,14 @@ syncrepl_message_to_entry( + return LDAP_OTHER; + } + ++ /* syncUUID[0] is normalized UUID received over the wire ++ * syncUUID[1] is denormalized UUID, generated here ++ */ ++ (void)slap_uuidstr_from_normalized( &syncUUID[1], &syncUUID[0], op->o_tmpmemctx ); ++ Debug( LDAP_DEBUG_SYNC, ++ "syncrepl_message_to_entry: %s DN: %s, UUID: %s\n", ++ si->si_ridtxt, bdn.bv_val, syncUUID[1].bv_val ); ++ + if ( syncstate == LDAP_SYNC_PRESENT || syncstate == LDAP_SYNC_DELETE ) { + /* NOTE: this could be done even before decoding the DN, + * although encoding errors wouldn't be detected */ +@@ -2677,7 +2686,6 @@ syncrepl_entry( + Backend *be = op->o_bd; + slap_callback cb = { NULL, NULL, NULL, NULL }; + int syncuuid_inserted = 0; +- struct berval syncUUID_strrep = BER_BVNULL; + + SlapReply rs_search = {REP_RESULT}; + Filter f = {0}; +@@ -2707,14 +2715,13 @@ syncrepl_entry( + } + } + +- (void)slap_uuidstr_from_normalized( &syncUUID_strrep, syncUUID, op->o_tmpmemctx ); + if ( syncstate != LDAP_SYNC_DELETE ) { + Attribute *a = attr_find( entry->e_attrs, slap_schema.si_ad_entryUUID ); + + if ( a == NULL ) { + /* add if missing */ + attr_merge_one( entry, slap_schema.si_ad_entryUUID, +- &syncUUID_strrep, syncUUID ); ++ &syncUUID[1], syncUUID ); + + } else if ( !bvmatch( &a->a_nvals[0], syncUUID ) ) { + /* replace only if necessary */ +@@ -2723,7 +2730,7 @@ syncrepl_entry( + ber_dupbv( &a->a_nvals[0], syncUUID ); + } + ber_memfree( a->a_vals[0].bv_val ); +- ber_dupbv( &a->a_vals[0], &syncUUID_strrep ); ++ ber_dupbv( &a->a_vals[0], &syncUUID[1] ); + } + } + +@@ -2734,16 +2741,16 @@ syncrepl_entry( + + if ( syncuuid_inserted ) { + Debug( LDAP_DEBUG_SYNC, "syncrepl_entry: %s inserted UUID %s\n", +- si->si_ridtxt, syncUUID_strrep.bv_val, 0 ); ++ si->si_ridtxt, syncUUID[1].bv_val, 0 ); + } + op->ors_filter = &f; + +- op->ors_filterstr.bv_len = STRLENOF( "(entryUUID=)" ) + syncUUID_strrep.bv_len; ++ op->ors_filterstr.bv_len = STRLENOF( "(entryUUID=)" ) + syncUUID[1].bv_len; + op->ors_filterstr.bv_val = (char *) slap_sl_malloc( + op->ors_filterstr.bv_len + 1, op->o_tmpmemctx ); + AC_MEMCPY( op->ors_filterstr.bv_val, "(entryUUID=", STRLENOF( "(entryUUID=" ) ); + AC_MEMCPY( &op->ors_filterstr.bv_val[STRLENOF( "(entryUUID=" )], +- syncUUID_strrep.bv_val, syncUUID_strrep.bv_len ); ++ syncUUID[1].bv_val, syncUUID[1].bv_len ); + op->ors_filterstr.bv_val[op->ors_filterstr.bv_len - 1] = ')'; + op->ors_filterstr.bv_val[op->ors_filterstr.bv_len] = '\0'; + +@@ -2820,23 +2827,6 @@ syncrepl_entry( + */ + op->o_csn = a->a_vals[0]; + freecsn = 0; +- /* There was no cookie CSN attached to this op, +- * make sure it's new enough +- */ +- if ( !syncCSN ) { +- int i, sid = slap_parse_csn_sid( &a->a_vals[0] ); +- for ( i = 0; isi_cookieState->cs_num; i++ ) { +- if ( sid < si->si_cookieState->cs_sids[i] ) +- break; +- if ( sid == si->si_cookieState->cs_sids[i] ) { +- if ( ber_bvcmp( &a->a_vals[0], &si->si_cookieState->cs_vals[i] ) <= 0 ) { +- Debug( LDAP_DEBUG_SYNC, "do_syncrep2: %s entryCSN too old, ignoring %s (%s)\n", +- si->si_ridtxt, a->a_vals[0].bv_val, entry->e_name.bv_val ); +- goto done; +- } +- } +- } +- } + } + } + retry_add:; +@@ -3229,10 +3219,8 @@ retry_modrdn:; + } + + done: +- if ( !BER_BVISNULL( &syncUUID_strrep ) ) { +- slap_sl_free( syncUUID_strrep.bv_val, op->o_tmpmemctx ); +- BER_BVZERO( &syncUUID_strrep ); +- } ++ slap_sl_free( syncUUID[1].bv_val, op->o_tmpmemctx ); ++ BER_BVZERO( &syncUUID[1] ); + if ( !BER_BVISNULL( &dni.ndn ) ) { + op->o_tmpfree( dni.ndn.bv_val, op->o_tmpmemctx ); + } +-- +1.7.7 + diff --git a/0009-ITS-7167-only-poll-sockets-for-write-as-needed.dif b/0009-ITS-7167-only-poll-sockets-for-write-as-needed.dif new file mode 100644 index 0000000..29c9f90 --- /dev/null +++ b/0009-ITS-7167-only-poll-sockets-for-write-as-needed.dif @@ -0,0 +1,114 @@ +From 867663c9b0f3468d16ba63340340edfadd8722bb Mon Sep 17 00:00:00 2001 +From: Howard Chu +Date: Mon, 20 Feb 2012 14:51:30 -0800 +Subject: ITS#7167 only poll sockets for write as needed + + +diff --git a/libraries/libldap/ldap-int.h b/libraries/libldap/ldap-int.h +index b4261a1..1ef15ad 100644 +--- a/libraries/libldap/ldap-int.h ++++ b/libraries/libldap/ldap-int.h +@@ -624,6 +624,7 @@ LDAP_F (void) ldap_free_select_info( void *sip ); + LDAP_F (void) ldap_mark_select_write( LDAP *ld, Sockbuf *sb ); + LDAP_F (void) ldap_mark_select_read( LDAP *ld, Sockbuf *sb ); + LDAP_F (void) ldap_mark_select_clear( LDAP *ld, Sockbuf *sb ); ++LDAP_F (void) ldap_clear_select_write( LDAP *ld, Sockbuf *sb ); + LDAP_F (int) ldap_is_read_ready( LDAP *ld, Sockbuf *sb ); + LDAP_F (int) ldap_is_write_ready( LDAP *ld, Sockbuf *sb ); + +diff --git a/libraries/libldap/open.c b/libraries/libldap/open.c +index 6b92ba6..a920953 100644 +--- a/libraries/libldap/open.c ++++ b/libraries/libldap/open.c +@@ -344,7 +344,6 @@ ldap_init_fd( + + /* Add the connection to the *LDAP's select pool */ + ldap_mark_select_read( ld, conn->lconn_sb ); +- ldap_mark_select_write( ld, conn->lconn_sb ); + + *ldp = ld; + return LDAP_SUCCESS; +@@ -502,7 +501,6 @@ ldap_open_internal_connection( LDAP **ldp, ber_socket_t *fdp ) + + /* Add the connection to the *LDAP's select pool */ + ldap_mark_select_read( ld, c->lconn_sb ); +- ldap_mark_select_write( ld, c->lconn_sb ); + + /* Make this connection an LDAP V3 protocol connection */ + rc = LDAP_VERSION3; +diff --git a/libraries/libldap/os-ip.c b/libraries/libldap/os-ip.c +index daa765e..2864256 100644 +--- a/libraries/libldap/os-ip.c ++++ b/libraries/libldap/os-ip.c +@@ -966,6 +966,32 @@ ldap_mark_select_clear( LDAP *ld, Sockbuf *sb ) + #endif + } + ++void ++ldap_clear_select_write( LDAP *ld, Sockbuf *sb ) ++{ ++ struct selectinfo *sip; ++ ber_socket_t sd; ++ ++ sip = (struct selectinfo *)ld->ld_selectinfo; ++ ++ ber_sockbuf_ctrl( sb, LBER_SB_OPT_GET_FD, &sd ); ++ ++#ifdef HAVE_POLL ++ /* for UNIX poll(2) */ ++ { ++ int i; ++ for(i=0; i < sip->si_maxfd; i++) { ++ if( sip->si_fds[i].fd == sd ) { ++ sip->si_fds[i].events &= ~POLL_WRITE; ++ } ++ } ++ } ++#else ++ /* for UNIX select(2) */ ++ FD_CLR( sd, &sip->si_writefds ); ++#endif ++} ++ + + int + ldap_is_write_ready( LDAP *ld, Sockbuf *sb ) +diff --git a/libraries/libldap/request.c b/libraries/libldap/request.c +index 88190a2..071391d 100644 +--- a/libraries/libldap/request.c ++++ b/libraries/libldap/request.c +@@ -202,6 +202,7 @@ ldap_int_flush_request( + + /* sent -- waiting for a response */ + ldap_mark_select_read( ld, lc->lconn_sb ); ++ ldap_clear_select_write( ld, lc->lconn_sb ); + } + return 0; + } +diff --git a/libraries/libldap/result.c b/libraries/libldap/result.c +index b6e8e75..7241df9 100644 +--- a/libraries/libldap/result.c ++++ b/libraries/libldap/result.c +@@ -302,7 +302,7 @@ wait4msg( + if ( ber_sockbuf_ctrl( lc->lconn_sb, + LBER_SB_OPT_DATA_READY, NULL ) ) + { +- lc_ready = 1; ++ lc_ready = 2; /* ready at ber level, not socket level */ + break; + } + } +@@ -373,8 +373,8 @@ wait4msg( + } + } + LDAP_MUTEX_UNLOCK( &ld->ld_req_mutex ); +- /* Quit looping if no one handled any events */ +- if (!serviced) ++ /* Quit looping if no one handled any socket events */ ++ if (!serviced && lc_ready == 1) + rc = -1; + } + LDAP_MUTEX_UNLOCK( &ld->ld_conn_mutex ); +-- +1.7.7 + diff --git a/openldap-2.4.28.tgz b/openldap-2.4.28.tgz deleted file mode 100644 index 6f355e5..0000000 --- a/openldap-2.4.28.tgz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:332ab5b13dbc0f85b1112d7a6f3485069108bfbd4d2603c8b548adbfa9bbc371 -size 5436340 diff --git a/openldap-2.4.29.tgz b/openldap-2.4.29.tgz new file mode 100644 index 0000000..ab88e46 --- /dev/null +++ b/openldap-2.4.29.tgz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44e95acab6c94b53723a451bd272c10f4f596f42bf26593ab84bb399d053c1e1 +size 5439978 diff --git a/openldap2-client.changes b/openldap2-client.changes index 5601892..44f7664 100644 --- a/openldap2-client.changes +++ b/openldap2-client.changes @@ -1,3 +1,29 @@ +------------------------------------------------------------------- +Mon Feb 27 14:14:23 UTC 2012 - rhafer@suse.de + +- Update to 2.4.29 + * Fixed slapd cn=config modification of first schema element + (ITS#7098) + * Fixed slapd operation reuse (ITS#7107) + * Fixed slapd blocked writers to not interfere with pool pause + (ITS#7115) + * Fixed slapd connection loop connindex usage (ITS#7131) + * Fixed slapd double mutex unlock via connection_done (ITS#7125) + * Fixed slapd check order in connection_write (ITS#7113) + * Fixed slapd slapadd to exit on failure (ITS#7142) + * Fixed slapd syncrepl reference to freed memory + (ITS#7127,ITS#7132) + * Fixed slapd syncrepl to ignore some errors on delete + (ITS#7052) + * Fixed slapd syncrepl to handle missing oldRDN (ITS#7144) + * Fixed slapd-monitor compare op to update cached entry + (ITS#7123) + * Fixed slapo-syncprov with already abandoned operation + (ITS#7150) +- Included patches from RE24 branch: + * only poll sockets for write as needed (ITS#7167, bnc#749082) + * sycnrepl Fixes (ITS#7162) + ------------------------------------------------------------------- Wed Dec 7 11:10:19 UTC 2011 - cfarrell@suse.com diff --git a/openldap2-client.spec b/openldap2-client.spec index f87e417..1b6f8ba 100644 --- a/openldap2-client.spec +++ b/openldap2-client.spec @@ -1,7 +1,7 @@ # # spec file for package openldap2-client # -# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -24,7 +24,7 @@ BuildRequires: cyrus-sasl-devel libopenssl-devel libtool %if %sles_version == 9 || %sles_version == 10 BuildRequires: -libopenssl-devel -pwdutils openssl-devel %endif -Version: 2.4.28 +Version: 2.4.29 Release: 1 Url: http://www.openldap.org License: OLDAP-2.8 @@ -60,6 +60,8 @@ Patch4: 0004-libldap-use-gethostbyname_r.dif Patch5: 0005-pie-compile.dif Patch6: 0006-No-Build-date-and-time-in-binaries.dif Patch7: 0007-Recover-on-DB-version-change.dif +Patch8: 0008-syncrepl-fixes-post-2.4.29.dif +Patch9: 0009-ITS-7167-only-poll-sockets-for-write-as-needed.dif Patch100: openldap-2.3.37.dif BuildRoot: %{_tmppath}/%{name}-%{version}-build %if "%{name}" == "openldap2" @@ -161,6 +163,8 @@ This package contains the OpenLDAP client libraries. %patch5 -p1 %patch6 -p1 %patch7 -p1 +%patch8 -p1 +%patch9 -p1 cp %{SOURCE5} . cp %{SOURCE6} . cd ../openldap-2.3.37 diff --git a/openldap2.changes b/openldap2.changes index 5601892..44f7664 100644 --- a/openldap2.changes +++ b/openldap2.changes @@ -1,3 +1,29 @@ +------------------------------------------------------------------- +Mon Feb 27 14:14:23 UTC 2012 - rhafer@suse.de + +- Update to 2.4.29 + * Fixed slapd cn=config modification of first schema element + (ITS#7098) + * Fixed slapd operation reuse (ITS#7107) + * Fixed slapd blocked writers to not interfere with pool pause + (ITS#7115) + * Fixed slapd connection loop connindex usage (ITS#7131) + * Fixed slapd double mutex unlock via connection_done (ITS#7125) + * Fixed slapd check order in connection_write (ITS#7113) + * Fixed slapd slapadd to exit on failure (ITS#7142) + * Fixed slapd syncrepl reference to freed memory + (ITS#7127,ITS#7132) + * Fixed slapd syncrepl to ignore some errors on delete + (ITS#7052) + * Fixed slapd syncrepl to handle missing oldRDN (ITS#7144) + * Fixed slapd-monitor compare op to update cached entry + (ITS#7123) + * Fixed slapo-syncprov with already abandoned operation + (ITS#7150) +- Included patches from RE24 branch: + * only poll sockets for write as needed (ITS#7167, bnc#749082) + * sycnrepl Fixes (ITS#7162) + ------------------------------------------------------------------- Wed Dec 7 11:10:19 UTC 2011 - cfarrell@suse.com diff --git a/openldap2.spec b/openldap2.spec index bda55d8..dc2eab5 100644 --- a/openldap2.spec +++ b/openldap2.spec @@ -1,7 +1,7 @@ # # spec file for package openldap2 # -# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -24,7 +24,7 @@ BuildRequires: cyrus-sasl-devel libopenssl-devel libtool %if %sles_version == 9 || %sles_version == 10 BuildRequires: -libopenssl-devel -pwdutils openssl-devel %endif -Version: 2.4.28 +Version: 2.4.29 Release: 1 Url: http://www.openldap.org License: OLDAP-2.8 @@ -60,6 +60,8 @@ Patch4: 0004-libldap-use-gethostbyname_r.dif Patch5: 0005-pie-compile.dif Patch6: 0006-No-Build-date-and-time-in-binaries.dif Patch7: 0007-Recover-on-DB-version-change.dif +Patch8: 0008-syncrepl-fixes-post-2.4.29.dif +Patch9: 0009-ITS-7167-only-poll-sockets-for-write-as-needed.dif Patch100: openldap-2.3.37.dif BuildRoot: %{_tmppath}/%{name}-%{version}-build %if "%{name}" == "openldap2" @@ -154,6 +156,8 @@ This package contains the OpenLDAP client libraries. %patch5 -p1 %patch6 -p1 %patch7 -p1 +%patch8 -p1 +%patch9 -p1 cp %{SOURCE5} . cp %{SOURCE6} . cd ../openldap-2.3.37