#915 add og_msg_alloc() and og_msg_free()

Add function to allocate and release the legacy message format.
master
OpenGnSys Support Team 2019-05-18 17:42:58 +02:00
parent e979fd2020
commit 222637848b
1 changed files with 27 additions and 11 deletions

View File

@ -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;
}