diff options
author | Rich Megginson <rmeggins@redhat.com> | 2010-09-22 15:56:14 -0600 |
---|---|---|
committer | Rich Megginson <rmeggins@redhat.com> | 2010-09-23 15:06:09 -0600 |
commit | 3561044171c4905659a2680658d9208eab5bd35e (patch) | |
tree | e167bf8b5f060045541d5561de806711b48d9c58 /ldap/servers/plugins/replication/windows_inc_protocol.c | |
parent | f980ff61da122b39d33bf83bc20f2b7a81b6be24 (diff) | |
download | ds-3561044171c4905659a2680658d9208eab5bd35e.tar.gz ds-3561044171c4905659a2680658d9208eab5bd35e.tar.xz ds-3561044171c4905659a2680658d9208eab5bd35e.zip |
Bug 634561 - Server crushes when using Windows Sync Agreement
https://bugzilla.redhat.com/show_bug.cgi?id=634561
Resolves: bug 634561
Bug Description: Server crushes when using Windows Sync Agreement
Reviewed by: ???
Branch: master
Fix Description: The regular replication protocol and the windows sync
protocol have two completely different struct repl_connection. They
are almost the same, almost identical fields, but they are different.
When additional fields were added to the struct repl_connection, not
at the end of the structure, and identical changes were not made to the
struct repl_connection in windows_connection.c, the structures got out
of sync. The authors tried to anticipate this condition by providing
windows_ versions of all of the conn_ functions. We were not using the
windows_ versions of these functions in all places in the winsync code.
The fix is to use the windows_ versions of these functions throughout
the winsync code, and to make the struct repl_connection the same size
up through the char *plain field. If additional fields are added to
either structure at the end, this problem should not occur in the
future.
Platforms tested: RHEL5 x86_64
Flag Day: no
Doc impact: no
(cherry picked from commit 4bd78323d0bb1299a19e0ed1feebc79ff997c92f)
Diffstat (limited to 'ldap/servers/plugins/replication/windows_inc_protocol.c')
-rw-r--r-- | ldap/servers/plugins/replication/windows_inc_protocol.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/ldap/servers/plugins/replication/windows_inc_protocol.c b/ldap/servers/plugins/replication/windows_inc_protocol.c index 7ff47fa5..b6e1da35 100644 --- a/ldap/servers/plugins/replication/windows_inc_protocol.c +++ b/ldap/servers/plugins/replication/windows_inc_protocol.c @@ -1003,9 +1003,9 @@ windows_inc_run(Private_Repl_Protocol *prp) /* remove_protocol_callbacks(prp); */ prp->stopped = 1; /* Cancel any linger timer that might be in effect... */ - conn_cancel_linger(prp->conn); + windows_conn_cancel_linger(prp->conn); /* ... and disconnect, if currently connected */ - conn_disconnect(prp->conn); + windows_conn_disconnect(prp->conn); LDAPDebug0Args( LDAP_DEBUG_TRACE, "<= windows_inc_run\n" ); } @@ -1309,7 +1309,7 @@ send_updates(Private_Repl_Protocol *prp, RUV *remote_update_vector, PRUint32 *nu if (CONN_OPERATION_SUCCESS != replay_crc) { int operation, error; - conn_get_error(prp->conn, &operation, &error); + windows_conn_get_error(prp->conn, &operation, &error); csn_as_string(entry.op->csn, PR_FALSE, csn_str); /* Figure out what to do next */ if (CONN_OPERATION_FAILED == replay_crc) |