summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoririna <irinagomez@us.es>2016-12-20 09:26:11 +0000
committeririna <irinagomez@us.es>2016-12-20 09:26:11 +0000
commit466106d63815ab56bccf039f798bfce3fb134d0e (patch)
treec9ebf2be1212fef184ca5be4b63d23f9a2417eea
parented05cd56fa20648fa02305d367ba6f0d8ac7dbe2 (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
-rw-r--r--sources/ogAdmServer.cpp24
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);