--- libaitsess/src/sess.c 2011/09/07 21:06:56 1.3.2.3 +++ libaitsess/src/sess.c 2011/11/03 15:36:03 1.3.2.7 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: sess.c,v 1.3.2.3 2011/09/07 21:06:56 misho Exp $ +* $Id: sess.c,v 1.3.2.7 2011/11/03 15:36:03 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -340,6 +340,10 @@ sess_prepareSession(tagSess * __restrict s, u_char use sess_SetErr(EINVAL, "Error:: invalid argument\n"); return NULL; } + if (s->addr) { + sess_SetErr(EINVAL, "Error:: already attached memory\n"); + return NULL; + } ATTACH_MEMORY(s); if (!s->addr) @@ -355,7 +359,7 @@ sess_prepareSession(tagSess * __restrict s, u_char use DEC_SEMAPHORE(s, ret); s->zcopy = useDirect; - arr = io_map2vals(s->addr + sizeof(sess_hdr_t), s->eom - sizeof(sess_hdr_t), + arr = io_map2vars(s->addr + sizeof(sess_hdr_t), s->eom - sizeof(sess_hdr_t), hdr->hdr_argc, useDirect); ADD_SEMAPHORE(s, ret); @@ -404,25 +408,21 @@ sess_commitSession(tagSess * __restrict s, array_t * _ return -1; } - if (!s->zcopy) - ATTACH_MEMORY(s); + ATTACH_MEMORY(s); if (!s->addr) { - if (!s->zcopy) - DETACH_MEMORY(s); - + DETACH_MEMORY(s); return -1; } else hdr = (sess_hdr_t*) s->addr; DEC_SEMAPHORE(s, rs); - if ((ret = io_vals2map(s->addr + sizeof(sess_hdr_t), s->eom - sizeof(sess_hdr_t), arr)) != -1) { + if ((ret = io_vars2map(s->addr + sizeof(sess_hdr_t), s->eom - sizeof(sess_hdr_t), arr)) != -1) { hdr->hdr_magic = SESS_AIT_MAGIC; hdr->hdr_argc = io_arraySize(arr); ret += sizeof(sess_hdr_t); } ADD_SEMAPHORE(s, rs); - if (!s->zcopy) - DETACH_MEMORY(s); + DETACH_MEMORY(s); return ret; }