--- libaitsess/src/aitsess.c 2012/02/10 23:04:41 1.3.2.7 +++ libaitsess/src/aitsess.c 2012/02/10 23:38:30 1.4 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: aitsess.c,v 1.3.2.7 2012/02/10 23:04:41 misho Exp $ +* $Id: aitsess.c,v 1.4 2012/02/10 23:38:30 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -217,22 +217,24 @@ sess_initSession(int id, const char *csFName, ait_sess * sess_freeSession() Free allocated memory for session item and delete session file if present name * * @Sess = Session item - * @delFile = !=0 delete session file or =0 keep session * return: none */ void -sess_freeSession(ait_sess_t ** __restrict Sess, int delFile) +sess_freeSession(ait_sess_t ** __restrict Sess) { - if (!Sess) + if (!Sess || !(*Sess)) return; + if ((*Sess)->addr) + DETACH_MEMORY(*Sess); + + /* memset(&(*Sess)->sess, 0, sizeof (*Sess)->sess); (*Sess)->type = SHARED_UNKNOWN; - if (delFile && *(*Sess)->name) - unlink((*Sess)->name); - if (*Sess) - free(*Sess); + */ + + free(*Sess); *Sess = NULL; } @@ -333,6 +335,8 @@ map_destroySession(ait_sess_t * __restrict Sess) close(Sess->mem.fd); unlink(szSName[1]); } + unlink(Sess->name); + memset(Sess->name, 0, sizeof Sess->name); Sess->eom ^= Sess->eom; Sess->key ^= Sess->key; } @@ -417,6 +421,8 @@ ipc_destroySession(ait_sess_t * __restrict Sess) semctl(Sess->id.semid, 0, IPC_RMID, &sems); if (Sess->mem.shmid != -1) shmctl(Sess->mem.shmid, IPC_RMID, &ds); + unlink(Sess->name); + memset(Sess->name, 0, sizeof Sess->name); Sess->eom ^= Sess->eom; Sess->key ^= Sess->key; }