[Fedora-directory-commits] ldapserver/ldap/servers/plugins/replication windows_connection.c, 1.10, 1.11

Richard Allen Megginson (rmeggins) fedora-directory-commits at redhat.com
Fri Oct 21 17:55:25 UTC 2005


Author: rmeggins

Update of /cvs/dirsec/ldapserver/ldap/servers/plugins/replication
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv23088

Modified Files:
	windows_connection.c 
Log Message:
also checkin fix for 170350 onto trunk


Index: windows_connection.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/plugins/replication/windows_connection.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- windows_connection.c	6 Oct 2005 18:23:10 -0000	1.10
+++ windows_connection.c	21 Oct 2005 17:55:22 -0000	1.11
@@ -385,6 +385,7 @@
 				char *errmsg = NULL;
 				char **referrals = NULL;
 				char *matched = NULL;
+                char *ptr;
 
 				rc = ldap_parse_result(conn->ld, res, &err, &matched,
 									   &errmsg, &referrals, &loc_returned_controls,
@@ -433,13 +434,34 @@
 					}
 					return_value = LDAP_SUCCESS == conn->last_ldap_error ? CONN_OPERATION_SUCCESS : CONN_OPERATION_FAILED;
 				}
-				slapi_log_error(SLAPI_LOG_REPL, repl_plugin_name,
-					"%s: Received result code %d for %s operation %s%s\n",
-					agmt_get_long_name(conn->agmt),
-					conn->last_ldap_error,
-					op_string == NULL ? "" : op_string,
-					extra_op_string == NULL ? "" : extra_op_string,
-					extra_op_string ==  NULL ? "" : " ");
+                /* remove extra newlines from AD error message */
+                for (ptr = errmsg; ptr && *ptr; ++ptr) {
+                    if ((*ptr == '\n') || (*ptr == '\r')) {
+                        *ptr = ' ';
+                    }
+                }
+                /* handle special case of constraint violation - give admin
+                   enough information to allow them to fix the problem
+                   and retry - bug 170350 */
+                if (conn->last_ldap_error == LDAP_CONSTRAINT_VIOLATION) {
+                    char ebuf[BUFSIZ];
+                    slapi_log_error(SLAPI_LOG_FATAL, repl_plugin_name,
+						"%s: Received error [%s] when attempting to %s"
+                        " entry [%s]: Please correct the attribute specified "
+                        "in the error message.  Refer to the Windows Active "
+                        "Directory docs for more information.\n",
+						agmt_get_long_name(conn->agmt),
+						errmsg, op_string == NULL ? "" : op_string,
+						escape_string(dn, ebuf));
+                } else {
+                    slapi_log_error(SLAPI_LOG_REPL, repl_plugin_name,
+						"%s: Received result code %d (%s) for %s operation %s%s\n",
+						agmt_get_long_name(conn->agmt),
+						conn->last_ldap_error, errmsg,
+						op_string == NULL ? "" : op_string,
+						extra_op_string == NULL ? "" : extra_op_string,
+						extra_op_string ==  NULL ? "" : " ");
+                }
 				/*
 				 * XXXggood do I need to free matched, referrals,
 				 * anything else? Or can I pass NULL for the args




More information about the Fedora-directory-commits mailing list