diff options
author | irina <irinagomez@us.es> | 2016-12-20 09:26:11 +0000 |
---|---|---|
committer | irina <irinagomez@us.es> | 2016-12-20 09:26:11 +0000 |
commit | 466106d63815ab56bccf039f798bfce3fb134d0e (patch) | |
tree | c9ebf2be1212fef184ca5be4b63d23f9a2417eea /sources/ogAdmServer.cpp | |
parent | ed05cd56fa20648fa02305d367ba6f0d8ac7dbe2 (diff) |
#559 ogAdmServer: Se libera memoria de variables y de resultados de la base de datos. Database.cpp y Database.h: Se crea función liberaResult.
git-svn-id: https://opengnsys.es/svn/branches/version1.1@5132 a21b9725-9963-47de-94b9-378ad31fedc9
Diffstat (limited to 'sources/ogAdmServer.cpp')
-rw-r--r-- | sources/ogAdmServer.cpp | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/sources/ogAdmServer.cpp b/sources/ogAdmServer.cpp index 1c4e172..9be1c8c 100644 --- a/sources/ogAdmServer.cpp +++ b/sources/ogAdmServer.cpp @@ -147,11 +147,14 @@ BOOLEAN gestionaTrama(SOCKET *socket_c) if (res == 0) { // Encontrada la función que procesa el mensaje liberaMemoria(nfn); res=tbfuncionesServer[i].fptr(socket_c, ptrTrama); // Invoca la función - liberaMemoria((char*)ptrTrama); + liberaMemoria(ptrTrama->parametros); + liberaMemoria(ptrTrama); return(res); } } - + liberaMemoria(nfn); + liberaMemoria(ptrTrama->parametros); + liberaMemoria(ptrTrama); /* Sólo puede ser un comando personalizado o su notificación if (ptrTrama->tipo == MSG_COMANDO) @@ -215,6 +218,7 @@ BOOLEAN respuestaSondeo(SOCKET *socket_c, TRAMA* ptrTrama) { lSize = strlen(iph); // Calcula longitud de la cadena de direccion/es IPE/S Ipes = (char*) reservaMemoria(lSize + 1); if (Ipes == NULL) { + liberaMemoria(iph); errorLog(modulo, 3, FALSE); return (FALSE); } @@ -348,6 +352,7 @@ BOOLEAN EcoConsola(SOCKET *socket_c, TRAMA* ptrTrama) // Lee archivo de eco de consola iph = copiaParametro("iph",ptrTrama); // Toma dirección ip del cliente sprintf(fileco,"/tmp/_Seconsola_%s",iph); // Nombre del archivo en el Servidor + liberaMemoria(iph); lSize=lonArchivo(fileco); if(lSize>0){ // Si el fichero tiene contenido... initParametros(ptrTrama,lSize+LONGITUD_PARAMETROS); @@ -504,6 +509,7 @@ BOOLEAN procesoInclusionClienteWinLnx(SOCKET *socket_c, TRAMA *ptrTrama,int *ido iph = copiaParametro("iph",ptrTrama); // Toma ip if (!db.Open(usuario, pasguor, datasource, catalog)) { // Error de conexión con la BD + liberaMemoria(iph); errorLog(modulo, 20, FALSE); db.GetErrorErrStr(msglog); errorInfo(modulo, msglog); @@ -516,14 +522,19 @@ BOOLEAN procesoInclusionClienteWinLnx(SOCKET *socket_c, TRAMA *ptrTrama,int *ido " WHERE ordenadores.ip = '%s'", iph); if (!db.Execute(sqlstr, tbl)) { // Error al recuperar los datos + liberaMemoria(iph); errorLog(modulo, 21, FALSE); db.GetErrorErrStr(msglog); errorInfo(modulo, msglog); + db.Close(); return (21); } if (tbl.ISEOF()) { // Si no existe el cliente + liberaMemoria(iph); errorLog(modulo, 22, FALSE); + db.liberaResult(tbl); + db.Close(); return (22); } @@ -532,15 +543,22 @@ BOOLEAN procesoInclusionClienteWinLnx(SOCKET *socket_c, TRAMA *ptrTrama,int *ido infoDebug(msglog); } if (!tbl.Get("idordenador", *idordenador)) { + liberaMemoria(iph); + db.liberaResult(tbl); tbl.GetErrorErrStr(msglog); errorInfo(modulo, msglog); + db.Close(); return (FALSE); } if (!tbl.Get("nombreordenador", nombreordenador)) { + liberaMemoria(iph); + db.liberaResult(tbl); tbl.GetErrorErrStr(msglog); errorInfo(modulo, msglog); + db.Close(); return (FALSE); } + db.liberaResult(tbl); db.Close(); if (!registraCliente(iph)) { // Incluyendo al cliente en la tabla de sokets @@ -604,6 +622,8 @@ BOOLEAN procesoInclusionCliente(SOCKET *socket_c, TRAMA *ptrTrama) { cfg = copiaParametro("cfg",ptrTrama); // Toma configuracion if (!db.Open(usuario, pasguor, datasource, catalog)) { // Error de conexión con la BD + liberaMemoria(iph); + liberaMemoria(cfg); errorLog(modulo, 20, FALSE); db.GetErrorErrStr(msglog); errorInfo(modulo, msglog); |