aboutsummaryrefslogtreecommitdiffstats
path: root/lualdap/src/lualdap.c
diff options
context:
space:
mode:
authorTomas Guisasola <tomas@luaforge.net>2003-09-03 11:07:51 +0000
committerTomas Guisasola <tomas@luaforge.net>2003-09-03 11:07:51 +0000
commit9be419e519e4bcdb96ac734467d341011661d384 (patch)
treee888daba3554563f79c566e479ecf14a650a0f00 /lualdap/src/lualdap.c
parentCorrecao do bug de desalocacao do objeto search. (diff)
downloadlualdap-9be419e519e4bcdb96ac734467d341011661d384.tar.xz
lualdap-9be419e519e4bcdb96ac734467d341011661d384.zip
Acrescimo de teste de desalocacao de objetos search.
Modificacao na funcao que recebe os resultados da busca para fechar o objeto quando receber a ultima mensagem.
Diffstat (limited to 'lualdap/src/lualdap.c')
-rwxr-xr-xlualdap/src/lualdap.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/lualdap/src/lualdap.c b/lualdap/src/lualdap.c
index 5ecb054..b00eb8e 100755
--- a/lualdap/src/lualdap.c
+++ b/lualdap/src/lualdap.c
@@ -1,6 +1,6 @@
/*
** LuaLDAP
-** $Id: lualdap.c,v 1.23 2003-09-03 10:40:27 tomas Exp $
+** $Id: lualdap.c,v 1.24 2003-09-03 11:07:51 tomas Exp $
*/
#include <stdlib.h>
@@ -631,6 +631,15 @@ static void push_dn (lua_State *L, LDAP *ld, LDAPMessage *entry) {
/*
+**
+*/
+static void search_close (lua_State *L, search_data *search) {
+ luaL_unref (L, LUA_REGISTRYINDEX, search->conn);
+ search->conn = LUA_NOREF;
+}
+
+
+/*
** Retrieve next message...
** @return #1 entry's distinguished name.
** @return #2 table with entry's attributes and values.
@@ -643,10 +652,10 @@ static int next_message (lua_State *L) {
int rc;
int ret = 1;
- if (search->msgid == -1) { /* no more messages */
+ /*if (search->msgid == -1) {*/ /* no more messages *//*
lua_pushnil (L);
return 1;
- }
+ }*/
lua_rawgeti (L, LUA_REGISTRYINDEX, search->conn);
conn = (conn_data *)lua_touserdata (L, -1); /* get connection */
@@ -656,7 +665,8 @@ static int next_message (lua_State *L) {
else if (rc == -1)
return faildirect (L, LUALDAP_PREFIX"result error");
else if (rc == LDAP_RES_SEARCH_RESULT) { /* last message => nil */
- search->msgid = -1;
+ /* close search object to avoid reuse */
+ search_close (L, search);
lua_pushnil (L);
} else {
LDAPMessage *msg = ldap_first_message (conn->ld, res);
@@ -676,7 +686,8 @@ static int next_message (lua_State *L) {
break;
}
case LDAP_RES_SEARCH_RESULT:
- search->msgid = -1;
+ /* close search object to avoid reuse */
+ search_close (L, search);
lua_pushnil (L);
break;
default:
@@ -716,8 +727,7 @@ static int lualdap_search_close (lua_State *L) {
luaL_argcheck (L, search!=NULL, 1, LUALDAP_PREFIX"LDAP search expected");
if (search->conn == LUA_NOREF)
return 0;
- luaL_unref (L, LUA_REGISTRYINDEX, search->conn);
- search->conn = LUA_NOREF;
+ search_close (L, search);
lua_pushnumber (L, 1);
return 1;
}