svn commit: samba r13345 - in branches/SAMBA_4_0/source: libcli/wrepl wrepl_server

metze at samba.org metze at samba.org
Sat Feb 4 13:54:31 GMT 2006


Author: metze
Date: 2006-02-04 13:54:30 +0000 (Sat, 04 Feb 2006)
New Revision: 13345

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=13345

Log:
let us replicate with NT4sp6a

I don't yet know what the extra data in the start_association call mean...

This also let w2k use WREPL_REPL_INFORM messages to us, but w2k3 doesn't
it do it yet...

metze
Modified:
   branches/SAMBA_4_0/source/libcli/wrepl/winsrepl.c
   branches/SAMBA_4_0/source/wrepl_server/wrepl_in_call.c


Changeset:
Modified: branches/SAMBA_4_0/source/libcli/wrepl/winsrepl.c
===================================================================
--- branches/SAMBA_4_0/source/libcli/wrepl/winsrepl.c	2006-02-04 11:19:09 UTC (rev 13344)
+++ branches/SAMBA_4_0/source/libcli/wrepl/winsrepl.c	2006-02-04 13:54:30 UTC (rev 13345)
@@ -563,6 +563,21 @@
 	packet->message.start.minor_version = 2;
 	packet->message.start.major_version = 5;
 
+	/*
+	 * nt4 uses 41 bytes for the start_association call
+	 * so do it the same and as we don't know th emeanings of this bytes
+	 * we just send zeros and nt4, w2k and w2k3 seems to be happy with this
+	 *
+	 * if we don't do this nt4 uses an old version of the wins replication protocol
+	 * and that would break nt4 <-> samba replication
+	 */
+	packet->padding	= data_blob_talloc(packet, NULL, 21);
+	if (packet->padding.data == NULL) {
+		talloc_free(packet);
+		return NULL;
+	}
+	memset(packet->padding.data, 0, packet->padding.length);
+
 	req = wrepl_request_send(wrepl_socket, packet, NULL);
 
 	talloc_free(packet);

Modified: branches/SAMBA_4_0/source/wrepl_server/wrepl_in_call.c
===================================================================
--- branches/SAMBA_4_0/source/wrepl_server/wrepl_in_call.c	2006-02-04 11:19:09 UTC (rev 13344)
+++ branches/SAMBA_4_0/source/wrepl_server/wrepl_in_call.c	2006-02-04 13:54:30 UTC (rev 13345)
@@ -50,10 +50,17 @@
 		return NT_STATUS_OK;
 	}
 
+/*
+ * it seems that we don't know all details about the start_association
+ * to support replication with NT4 (it sends 1.1 instead of 5.2)
+ * we ignore the version numbers until we know all details
+ */
+#if 0
 	if (start->minor_version != 2 || start->major_version != 5) {
 		/* w2k terminate the connection if the versions doesn't match */
 		return NT_STATUS_UNKNOWN_REVISION;
 	}
+#endif
 
 	call->wreplconn->assoc_ctx.stopped	= False;
 	call->wreplconn->assoc_ctx.our_ctx	= WREPLSRV_VALID_ASSOC_CTX;
@@ -64,6 +71,19 @@
 	start_reply->minor_version		= 2;
 	start_reply->major_version		= 5;
 
+	/*
+	 * nt4 uses 41 bytes for the start_association call
+	 * so do it the same and as we don't know th emeanings of this bytes
+	 * we just send zeros and nt4, w2k and w2k3 seems to be happy with this
+	 *
+	 * if we don't do this nt4 uses an old version of the wins replication protocol
+	 * and that would break nt4 <-> samba replication
+	 */
+	call->rep_packet.padding		= data_blob_talloc(call, NULL, 21);
+	NT_STATUS_HAVE_NO_MEMORY(call->rep_packet.padding.data);
+
+	memset(call->rep_packet.padding.data, 0, call->rep_packet.padding.length);
+
 	return NT_STATUS_OK;
 }
 



More information about the samba-cvs mailing list