From 222637848bf96ba38a0153bf081649560b9153d7 Mon Sep 17 00:00:00 2001 From: OpenGnSys Support Team Date: Sat, 18 May 2019 17:42:58 +0200 Subject: [PATCH] #915 add og_msg_alloc() and og_msg_free() Add function to allocate and release the legacy message format. --- sources/ogAdmServer.cpp | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/sources/ogAdmServer.cpp b/sources/ogAdmServer.cpp index 8e1173e..6ec9c2d 100644 --- a/sources/ogAdmServer.cpp +++ b/sources/ogAdmServer.cpp @@ -3572,6 +3572,30 @@ static int og_client_state_recv_hdr(struct og_client *cli) return 1; } +static TRAMA *og_msg_alloc(char *data, unsigned int len) +{ + TRAMA *ptrTrama; + + ptrTrama = (TRAMA *)reservaMemoria(sizeof(TRAMA)); + if (!ptrTrama) { + syslog(LOG_ERR, "OOM\n"); + return NULL; + } + + initParametros(ptrTrama, len); + memcpy(ptrTrama, "@JMMLCAMDJ_MCDJ", LONGITUD_CABECERATRAMA); + memcpy(ptrTrama->parametros, data, len); + ptrTrama->lonprm = len; + + return ptrTrama; +} + +static void og_msg_free(TRAMA *ptrTrama) +{ + liberaMemoria(ptrTrama->parametros); + liberaMemoria(ptrTrama); +} + static int og_client_state_process_payload(struct og_client *cli) { TRAMA *ptrTrama; @@ -3581,21 +3605,13 @@ static int og_client_state_process_payload(struct og_client *cli) len = cli->msg_len - (LONGITUD_CABECERATRAMA + LONHEXPRM); data = &cli->buf[LONGITUD_CABECERATRAMA + LONHEXPRM]; - ptrTrama = (TRAMA *)reservaMemoria(sizeof(TRAMA)); - if (!ptrTrama) { - syslog(LOG_ERR, "OOM\n"); + ptrTrama = og_msg_alloc(data, len); + if (!ptrTrama) return -1; - } - - initParametros(ptrTrama, len); - memcpy(ptrTrama, cli->buf, LONGITUD_CABECERATRAMA); - memcpy(ptrTrama->parametros, data, len); - ptrTrama->lonprm = len; gestionaTrama(ptrTrama, cli); - liberaMemoria(ptrTrama->parametros); - liberaMemoria(ptrTrama); + og_msg_free(ptrTrama); return 1; }