- tag = ber_scanf( ber, "{aa" /*"}"*/, &e->e_dn, &e->e_ndn );
- if( tag == LBER_ERROR ) {
- free( e );
- return LDAP_PROTOCOL_ERROR;
+#ifdef NEW_LOGGING
+ LDAP_LOG(( "operation", LDAP_LEVEL_DETAIL1,
+ "entry_encode: id: 0x%08lx \"%s\"\n",
+ (long) e->e_id, e->e_dn ));
+#else
+ Debug( LDAP_DEBUG_TRACE, "=> entry_encode(0x%08lx): %s\n",
+ (long) e->e_id, e->e_dn, 0 );
+#endif
+ dnlen = e->e_name.bv_len;
+ ndnlen = e->e_nname.bv_len;
+ len = dnlen + ndnlen + 2; /* two trailing NUL bytes */
+ len += entry_lenlen(dnlen);
+ len += entry_lenlen(ndnlen);
+ for (a=e->e_attrs; a; a=a->a_next) {
+ /* For AttributeDesc, we only store the attr name */
+ siz += sizeof(Attribute);
+ len += a->a_desc->ad_cname.bv_len+1;
+ len += entry_lenlen(a->a_desc->ad_cname.bv_len);
+ for (i=0; a->a_vals[i].bv_val; i++) {
+ siz += sizeof(struct berval);
+ len += a->a_vals[i].bv_len + 1;
+ len += entry_lenlen(a->a_vals[i].bv_len);
+ }
+ len += entry_lenlen(i);
+ siz += sizeof(struct berval); /* empty berval at end */