Re: [Freeipa-devel] [PATCH 0183] Move data structures for parser from ldap_qresult_t to ldap_entry_t

2014-02-21 Thread Petr Spacek

On 7.10.2013 15:20, Tomas Hozza wrote:

On 08/01/2013 03:49 PM, Petr Spacek wrote:

Hello,

Move data structures for parser from ldap_qresult_t to ldap_entry_t.


The target branch is master.



ACK.

Tested Patch bundle 181 - 185. Common tasks like
adding/deleting/updating records work fine. Also PTR sync, zone serial
number
incrementation is OK.


Pushed to v3 and master branch: f9db18e7074f8938245b90d4a00774cbc07e261b

--
Petr^2 Spacek

___
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel


Re: [Freeipa-devel] [PATCH 0183] Move data structures for parser from ldap_qresult_t to ldap_entry_t

2013-10-07 Thread Tomas Hozza
On 08/01/2013 03:49 PM, Petr Spacek wrote:
 Hello,
 
 Move data structures for parser from ldap_qresult_t to ldap_entry_t.
 
 
 The target branch is master.
 

ACK.

Tested Patch bundle 181 - 185. Common tasks like
adding/deleting/updating records work fine. Also PTR sync, zone serial
number
incrementation is OK.


Regards,

Tomas

___
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel


[Freeipa-devel] [PATCH 0183] Move data structures for parser from ldap_qresult_t to ldap_entry_t

2013-08-01 Thread Petr Spacek

Hello,

Move data structures for parser from ldap_qresult_t to ldap_entry_t.


The target branch is master.

--
Petr^2 Spacek
From b32ba3f02460eb3e9d81c53b6774bb34b2ff08bb Mon Sep 17 00:00:00 2001
From: Petr Spacek pspa...@redhat.com
Date: Mon, 22 Jul 2013 15:18:55 +0200
Subject: [PATCH] Move data structures for parser from ldap_qresult_t to
 ldap_entry_t.

Signed-off-by: Petr Spacek pspa...@redhat.com
---
 src/ldap_entry.c  | 18 +--
 src/ldap_entry.h  | 11 +++
 src/ldap_helper.c | 96 ---
 3 files changed, 61 insertions(+), 64 deletions(-)

diff --git a/src/ldap_entry.c b/src/ldap_entry.c
index 986126dd10fdfdd93666362b87433138615d9bca..96ff183d85330f65c4c1a739c194cc59beebc338 100644
--- a/src/ldap_entry.c
+++ b/src/ldap_entry.c
@@ -198,8 +198,6 @@ ldap_entry_create(isc_mem_t *mctx, LDAP *ld, LDAPMessage *ldap_entry,
 	INIT_LIST(entry-attrs);
 	INIT_LINK(entry, link);
 
-	result = ISC_R_SUCCESS;
-
 	for (attribute = ldap_first_attribute(ld, ldap_entry, ber);
 	 attribute != NULL;
 	 attribute = ldap_next_attribute(ld, ldap_entry, ber)) {
@@ -221,14 +219,21 @@ ldap_entry_create(isc_mem_t *mctx, LDAP *ld, LDAPMessage *ldap_entry,
 		CLEANUP_WITH(ISC_R_FAILURE);
 	}
 
+	CHECKED_MEM_GET(mctx, entry-rdata_target_mem, MINTSIZ);
+	CHECK(isc_lex_create(mctx, TOKENSIZ, entry-lex));
+
 	*entryp = entry;
 
 cleanup:
 	if (ber != NULL)
 		ber_free(ber, 0);
 	if (result != ISC_R_SUCCESS) {
-		if (entry != NULL)
+		if (entry != NULL) {
 			ldap_attributelist_destroy(mctx, entry-attrs);
+			SAFE_MEM_PUT(mctx, entry-rdata_target_mem, MINTSIZ);
+			if (entry-lex != NULL)
+isc_lex_destroy(entry-lex);
+		}
 		SAFE_MEM_PUT_PTR(mctx, entry);
 		SAFE_MEM_PUT_PTR(mctx, attr);
 	}
@@ -250,6 +255,13 @@ ldap_entry_destroy(isc_mem_t *mctx, ldap_entry_t **entryp)
 	ldap_attributelist_destroy(mctx, entry-attrs);
 	if (entry-dn != NULL)
 		ldap_memfree(entry-dn);
+	if (entry-lex != NULL) {
+		isc_lex_close(entry-lex);
+		isc_lex_destroy(entry-lex);
+	}
+	if (entry-rdata_target_mem != NULL)
+		isc_mem_put(mctx, entry-rdata_target_mem, MINTSIZ);
+
 	SAFE_MEM_PUT_PTR(mctx, entry);
 
 	*entryp = NULL;
diff --git a/src/ldap_entry.h b/src/ldap_entry.h
index a71be0a32ee7b4179799052bf2b6dc13c7cfa076..6311b694f720929231ce44addfc18acc6c251617 100644
--- a/src/ldap_entry.h
+++ b/src/ldap_entry.h
@@ -22,6 +22,7 @@
 #ifndef _LD_LDAP_ENTRY_H_
 #define _LD_LDAP_ENTRY_H_
 
+#include isc/lex.h
 #include isc/util.h
 #include dns/types.h
 
@@ -51,6 +52,11 @@ struct ldap_entry {
 	ldap_attribute_t	*lastattr;
 	ldap_attributelist_t	attrs;
 	LINK(ldap_entry_t)	link;
+
+	/* Parsing. */
+	isc_lex_t		*lex;
+	isc_buffer_t		rdata_target;
+	unsigned char		*rdata_target_mem;
 };
 
 /* Represents LDAP attribute and it's values */
@@ -70,6 +76,11 @@ struct ldap_attribute {
 
 typedef unsigned char		ldap_entryclass_t;
 
+/* Max type length definitions, from lib/dns/master.c */
+#define MINTSIZ (65535 - 12 - 1 - 2 - 2 - 4 - 2)
+#define TOKENSIZ (8*1024)
+
+
 isc_result_t
 ldap_entrylist_create(isc_mem_t *mctx, LDAP *ld, LDAPMessage *msg,
 		  ldap_entrylist_t *entrylist) ATTR_NONNULLS;
diff --git a/src/ldap_helper.c b/src/ldap_helper.c
index 5fd82fb4b9f72eb9cf2129810bfaaa2186d5d84b..8ba8a398ae013c9b7603a783ea14c94e80c2 100644
--- a/src/ldap_helper.c
+++ b/src/ldap_helper.c
@@ -38,7 +38,6 @@
 #include isc/serial.h
 
 #include isc/buffer.h
-#include isc/lex.h
 #include isc/mem.h
 #include isc/mutex.h
 #include isc/region.h
@@ -82,11 +81,6 @@
 #include rbt_helper.h
 #include fwd_register.h
 
-
-/* Max type length definitions, from lib/dns/master.c */
-#define MINTSIZ (65535 - 12 - 1 - 2 - 2 - 4 - 2)
-#define TOKENSIZ (8*1024)
-
 const enum_txt_assoc_t forwarder_policy_txts[] = {
 	{ dns_fwdpolicy_none,	none	},
 	{ dns_fwdpolicy_first,	first	},
@@ -199,11 +193,6 @@ struct ldap_qresult {
 	ld_string_t		*query_string;
 	LDAPMessage		*result;
 	ldap_entrylist_t	ldap_entries;
-
-	/* Parsing. */
-	isc_lex_t		*lex;
-	isc_buffer_t		rdata_target;
-	unsigned char		*rdata_target_mem;
 };
 
 /*
@@ -284,17 +273,13 @@ static void destroy_ldap_connection(ldap_connection_t **ldap_connp) ATTR_NONNULL
 static isc_result_t findrdatatype_or_create(isc_mem_t *mctx,
 		ldapdb_rdatalist_t *rdatalist, dns_rdataclass_t rdclass,
 		dns_rdatatype_t rdtype, dns_ttl_t ttl, dns_rdatalist_t **rdlistp) ATTR_NONNULLS;
-static isc_result_t add_soa_record(isc_mem_t *mctx, ldap_qresult_t *qresult,
-		dns_name_t *origin, ldap_entry_t *entry,
-		ldapdb_rdatalist_t *rdatalist, const char *fake_mname) ATTR_NONNULLS;
-static isc_result_t parse_rdata(isc_mem_t *mctx, ldap_qresult_t *qresult,
+static isc_result_t add_soa_record(isc_mem_t *mctx, dns_name_t *origin,
+		ldap_entry_t *entry, ldapdb_rdatalist_t *rdatalist,
+		const char *fake_mname) ATTR_NONNULLS;
+static isc_result_t parse_rdata(isc_mem_t *mctx, ldap_entry_t *entry,
 		dns_rdataclass_t rdclass, dns_rdatatype_t rdtype,
 		dns_name_t *origin, const char *rdata_text,