+2003-04-25 [match] 0.8.11claws113
+
+ * src/addrindex.c
+ * src/addrbook.c
+ * src/ldapquery.[ch]
+ * src/ldapctrl.[ch]
+ fix memleak.
+ * src/ldapserver.[ch]
+ fix memleak. fix segfault.
+ plug a Claws memleak
+
2003-04-25 [alfons] 0.8.11claws112
* src/folder.c
MICRO_VERSION=11
INTERFACE_AGE=0
BINARY_AGE=0
-EXTRA_VERSION=claws112
+EXTRA_VERSION=claws113
VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION
dnl set $target
{
GList *attr;
gchar *name, *value;
- gchar *pid = NULL, *eid = NULL;
+ gchar *eid = NULL;
+ /* gchar *pid = NULL; */
ItemEMail *email = NULL;
attr = xml_get_current_tag_attr(file);
while (attr) {
name = ((XMLAttr *)attr->data)->name;
value = ((XMLAttr *)attr->data)->value;
+ /*
if (strcmp(name, AB_ATTAG_PID) == 0)
pid = g_strdup(value);
else if (strcmp(name, AB_ATTAG_EID) == 0)
eid = g_strdup(value);
+ */
+ if( strcmp( name, AB_ATTAG_EID ) == 0 )
+ eid = g_strdup( value );
attr = g_list_next(attr);
}
/* email = addrcache_get_email( book->addressCache, pid, eid ); */
attr = g_list_next( attr );
}
- server = ldapsvr_create();
+ server = ldapsvr_create_noctl();
ldapsvr_set_name( server, serverName );
ldapsvr_set_search_flag( server, bSearch );
g_free( serverName );
gchar *name;
if( ! server->searchFlag ) return;
- printf( "Searching ::%s::\n", ldapsvr_get_name( server ) );
+ /* printf( "Searching ::%s::\n", ldapsvr_get_name( server ) ); */
/* Retire any aged queries */
ldapsvr_retire_query( server );
return qry->agedFlag;
}
-/**
- * Release the thread associated with the query.
- * \param qry Query object to process.
- */
-void ldapqry_release_thread( LdapQuery *qry ) {
- g_return_if_fail( qry != NULL );
- printf( "ldapqry_release_thread...\n" );
- if( qry->thread != NULL ) {
- g_free( qry->thread );
- printf( "\t===========>done\n" );
- }
- qry->thread = NULL;
-}
-
/**
* Release the LDAP control data associated with the query.
* \param qry Query object to process.
}
/**
- * Free up LDAP query object by releasing internal memory.
+ * Free up LDAP query object by releasing internal memory. Note that
+ * the thread object will be freed by the OS.
* \param qry Query object to process.
*/
void ldapqry_free( LdapQuery *qry ) {
* to prevent joining threads.
* \param qry Query object to process.
*/
-void ldapqry_join_thread( LdapQuery *qry ) {
+void ldapqry_join_threadX( LdapQuery *qry ) {
g_return_if_fail( qry != NULL );
/* Wait for thread */
/**
* Cleanup LDAP thread data. This function will be called when each thread
- * exits.
+ * exits. Note that the thread object will be freed by the kernel.
* \param ptr Pointer to object being destroyed (a query object in this case).
*/
static void ldapqry_destroyer( void * ptr ) {
ldapctl_free( qry->control );
}
qry->control = NULL;
-
- if( qry->thread ) {
- g_free( qry->thread );
- }
qry->thread = NULL;
ldapqry_set_busy_flag( qry, FALSE );
/*
void ldapqry_set_callback_entry ( LdapQuery *qry, void *func );
void ldapqry_set_callback_end ( LdapQuery *qry, void *func );
void ldapqry_clear ( LdapQuery *qry );
-void ldapqry_release_thread ( LdapQuery *qry );
void ldapqry_free ( LdapQuery *qry );
void ldapqry_print ( const LdapQuery *qry, FILE *stream );
void ldapqry_set_stop_flag ( LdapQuery *qry, const gboolean value );
#include "adbookbase.h"
/**
- * Create new LDAP server interface object.
+ * Create new LDAP server interface object with no control object.
* \return Initialized LDAP server object.
*/
-LdapServer *ldapsvr_create() {
+LdapServer *ldapsvr_create_noctl( void ) {
LdapServer *server;
server = g_new0( LdapServer, 1 );
server->type = ADBOOKTYPE_LDAP;
server->addressCache = addrcache_create();
server->retVal = MGU_SUCCESS;
- server->control = ldapctl_create();
+ server->control = NULL;
server->listQuery = NULL;
server->searchFlag = FALSE;
return server;
}
+/**
+ * Create new LDAP server interface object.
+ * \return Initialized LDAP server object.
+ */
+LdapServer *ldapsvr_create( void ) {
+ LdapServer *server;
+
+ server = ldapsvr_create();
+ server->control = ldapctl_create();
+ return server;
+}
+
/**
* Return name of server.
* \param server Server object.
server->control = NULL;
}
+/**
+ * Free all queries.
+ * \param server Server object.
+ */
+void ldapsvr_free_all_query( LdapServer *server ) {
+ GList *node;
+ g_return_if_fail( server != NULL );
+
+ node = server->listQuery;
+ while( node ) {
+ LdapQuery *qry = node->data;
+ ldapqry_free( qry );
+ node->data = NULL;
+ node = g_list_next( node );
+ }
+ g_list_free( server->listQuery );
+ server->listQuery = NULL;
+}
+
+/**
+ * Add query to server.
+ * \param server Server object.
+ * \param qry Query object.
+ */
+void ldapsvr_add_query( LdapServer *server, LdapQuery *qry ) {
+ g_return_if_fail( server != NULL );
+ g_return_if_fail( qry != NULL );
+
+ server->listQuery = g_list_append( server->listQuery, qry );
+ qry->server = server;
+}
+
/**
* Free up LDAP server interface object by releasing internal memory.
* \param server Server object.
ldapctl_free( server->control );
server->control = NULL;
+ /* Free all queries */
+ ldapsvr_free_all_query( server );
+
/* Clear pointers */
server->type = ADBOOKTYPE_NONE;
server->addressCache = NULL;
}
}
-/**
- * Add query to server.
- * \param server Server object.
- * \param qry Query object.
- */
-void ldapsvr_add_query( LdapServer *server, LdapQuery *qry ) {
- g_return_if_fail( server != NULL );
- g_return_if_fail( qry != NULL );
-
- server->listQuery = g_list_append( server->listQuery, qry );
- qry->server = server;
-}
-
-/**
- * Free all queries.
- * \param server Server object.
- */
-void ldapsvr_free_all_query( LdapServer *server ) {
- GList *node;
- g_return_if_fail( server != NULL );
-
- node = server->listQuery;
- while( node ) {
- LdapQuery *qry = node->data;
- ldapqry_free( qry );
- node->data = NULL;
- node = g_list_next( node );
- }
- g_list_free( server->listQuery );
- server->listQuery = NULL;
-}
-
/**
* Return link list of persons.
* \param server Server object.
ldapqry_initialize();
/* Perform query */
- printf( "ldapsvr_execute_query::reading with thread...\n" );
+ /* printf( "ldapsvr_execute_query::reading with thread...\n" ); */
if( ldapqry_check_search( qry ) ) {
ldapqry_read_data_th( qry );
+ /*
if( qry->retVal == LDAPRC_SUCCESS ) {
printf( "ldapsvr_execute_query::SUCCESS with thread...\n" );
}
+ */
}
- printf( "ldapsvr_execute_query... terminated\n" );
+ /* printf( "ldapsvr_execute_query... terminated\n" ); */
}
/**
};
/* Function prototypes */
+LdapServer *ldapsvr_create_noctl( void );
LdapServer *ldapsvr_create ( void );
void ldapsvr_set_name ( LdapServer *server, const gchar *value );
void ldapsvr_set_accessed ( LdapServer *server, const gboolean value );
void ldapsvr_force_refresh ( LdapServer *server );
+void ldapsvr_free_all_query ( LdapServer *server );
void ldapsvr_free ( LdapServer *server );
gint ldapsvr_get_status ( LdapServer *server );
gboolean ldapsvr_get_accessed ( LdapServer *server );