X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libraries%2Flibrewrite%2Fsession.c;h=4fa58f876c5664e0f04af10563b938e7d30f8963;hb=474dfbc8fd75aed0376695ccc2f8c092a7a1bc6f;hp=536d3be1908a7a9fbda3292e9c9784f65fb8cf4c;hpb=4e5eb991eb668e3f296a189dc5316eb48e728650;p=openldap diff --git a/libraries/librewrite/session.c b/libraries/librewrite/session.c index 536d3be190..4fa58f876c 100644 --- a/libraries/librewrite/session.c +++ b/libraries/librewrite/session.c @@ -303,7 +303,7 @@ rewrite_session_var_get( } static void -rewrite_session_free( void *v_session ) +rewrite_session_clean( void *v_session ) { struct rewrite_session *session = (struct rewrite_session *)v_session; @@ -321,6 +321,13 @@ rewrite_session_free( void *v_session ) #endif /* USE_REWRITE_LDAP_PVT_THREADS */ } +static void +rewrite_session_free( void *v_session ) +{ + rewrite_session_clean( v_session ); + free( v_session ); +} + /* * Deletes a session */ @@ -330,13 +337,11 @@ rewrite_session_delete( const void *cookie ) { - struct rewrite_session *session, tmp; + struct rewrite_session *session, tmp = { 0 }; assert( info != NULL ); assert( cookie != NULL ); - tmp.ls_cookie = ( void * )cookie; - session = rewrite_session_find( info, cookie ); if ( session == NULL ) { @@ -348,7 +353,7 @@ rewrite_session_delete( return REWRITE_SUCCESS; } - rewrite_session_free( session ); + rewrite_session_clean( session ); #ifdef USE_REWRITE_LDAP_PVT_THREADS ldap_pvt_thread_rdwr_wlock( &info->li_cookies_mutex ); @@ -360,7 +365,9 @@ rewrite_session_delete( /* * There is nothing to delete in the return value */ + tmp.ls_cookie = ( void * )cookie; avl_delete( &info->li_cookies, ( caddr_t )&tmp, rewrite_cookie_cmp ); + free( session ); #ifdef USE_REWRITE_LDAP_PVT_THREADS