svn commit: samba r7770 - in branches/SAMBA_4_0/source/libcli/ldap: .

tridge at samba.org tridge at samba.org
Mon Jun 20 01:17:30 GMT 2005


Author: tridge
Date: 2005-06-20 01:17:29 +0000 (Mon, 20 Jun 2005)
New Revision: 7770

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

Log:
added ldaps support to our ldap client library

Modified:
   branches/SAMBA_4_0/source/libcli/ldap/config.mk
   branches/SAMBA_4_0/source/libcli/ldap/ldap_client.c
   branches/SAMBA_4_0/source/libcli/ldap/ldap_client.h


Changeset:
Modified: branches/SAMBA_4_0/source/libcli/ldap/config.mk
===================================================================
--- branches/SAMBA_4_0/source/libcli/ldap/config.mk	2005-06-20 01:15:47 UTC (rev 7769)
+++ branches/SAMBA_4_0/source/libcli/ldap/config.mk	2005-06-20 01:17:29 UTC (rev 7770)
@@ -7,6 +7,6 @@
 		libcli/ldap/ldap_msg.o \
 		libcli/ldap/ldap_ndr.o \
 		libcli/ldap/ldap_ildap.o
-REQUIRED_SUBSYSTEMS = LIBCLI_UTILS LIBEVENTS GENSEC SOCKET RPC_NDR_SAMR
+REQUIRED_SUBSYSTEMS = LIBCLI_UTILS LIBEVENTS GENSEC SOCKET RPC_NDR_SAMR LIBTLS
 # End SUBSYSTEM LIBCLI_LDAP
 #################################

Modified: branches/SAMBA_4_0/source/libcli/ldap/ldap_client.c
===================================================================
--- branches/SAMBA_4_0/source/libcli/ldap/ldap_client.c	2005-06-20 01:15:47 UTC (rev 7769)
+++ branches/SAMBA_4_0/source/libcli/ldap/ldap_client.c	2005-06-20 01:17:29 UTC (rev 7770)
@@ -28,6 +28,7 @@
 #include "dlinklist.h"
 #include "lib/events/events.h"
 #include "lib/socket/socket.h"
+#include "lib/tls/tls.h"
 #include "libcli/ldap/ldap.h"
 #include "libcli/ldap/ldap_client.h"
 
@@ -90,8 +91,8 @@
 		}
 	}
 
-	talloc_free(conn->sock);
-	conn->sock = NULL;
+	talloc_free(conn->tls);
+	conn->tls = NULL;
 }
 
 
@@ -244,7 +245,7 @@
 	size_t npending=0, nread;
 
 	/* work out how much data is pending */
-	status = socket_pending(conn->sock, &npending);
+	status = tls_socket_pending(conn->tls, &npending);
 	if (!NT_STATUS_IS_OK(status) || npending == 0) {
 		ldap_connection_dead(conn);
 		return;
@@ -258,8 +259,8 @@
 	}
 
 	/* receive the pending data */
-	status = socket_recv(conn->sock, conn->partial.data + conn->partial.length,
-			     npending, &nread, 0);
+	status = tls_socket_recv(conn->tls, conn->partial.data + conn->partial.length,
+				 npending, &nread);
 	if (NT_STATUS_EQUAL(status, STATUS_MORE_ENTRIES)) {
 		return;
 	}
@@ -288,7 +289,7 @@
 		size_t nsent;
 		NTSTATUS status;
 
-		status = socket_send(conn->sock, &req->data, &nsent, 0);
+		status = tls_socket_send(conn->tls, &req->data, &nsent);
 		if (NT_STATUS_EQUAL(status, STATUS_MORE_ENTRIES)) {
 			break;
 		}
@@ -331,7 +332,7 @@
 	struct ldap_connection *conn = talloc_get_type(private, struct ldap_connection);
 	if (flags & EVENT_FD_WRITE) {
 		ldap_send_handler(conn);
-		if (conn->sock == NULL) return;
+		if (conn->tls == NULL) return;
 	}
 	if (flags & EVENT_FD_READ) {
 		ldap_recv_handler(conn);
@@ -416,6 +417,14 @@
 		return NT_STATUS_INTERNAL_ERROR;
 	}
 
+	conn->tls = tls_init_client(conn->sock, conn->event.fde, conn->ldaps);
+	if (conn->tls == NULL) {
+		talloc_free(conn->sock);
+		return NT_STATUS_INTERNAL_ERROR;
+	}
+	talloc_steal(conn, conn->tls);
+	talloc_steal(conn->tls, conn->sock);
+
 	return NT_STATUS_OK;
 }
 
@@ -460,7 +469,7 @@
 {
 	struct ldap_request *req;
 
-	if (conn->sock == NULL) {
+	if (conn->tls == NULL) {
 		return NULL;
 	}
 

Modified: branches/SAMBA_4_0/source/libcli/ldap/ldap_client.h
===================================================================
--- branches/SAMBA_4_0/source/libcli/ldap/ldap_client.h	2005-06-20 01:15:47 UTC (rev 7769)
+++ branches/SAMBA_4_0/source/libcli/ldap/ldap_client.h	2005-06-20 01:17:29 UTC (rev 7770)
@@ -47,6 +47,7 @@
 
 /* main context for a ldap client connection */
 struct ldap_connection {
+	struct tls_context *tls;
 	struct socket_context *sock;
 	char *host;
 	uint16_t port;



More information about the samba-cvs mailing list