From: Thadeu Lima de Souza Cascardo Date: Fri, 7 Mar 2014 23:28:14 +0000 (-0300) Subject: Send right part of the header for 2014. X-Git-Tag: v2014.1~16 X-Git-Url: http://git.cascardo.eti.br/?p=cascardo%2Frnetclient.git;a=commitdiff_plain;h=b890aeec16fb361e7832b5d125e62e57f0b22bdc Send right part of the header for 2014. The code was sending a piece of the header as expected by the server, considering the header size for 2013. Now, we check for the year we are submitting for, and use the proper size. Reported-by: Alexandre Oliva --- diff --git a/rnet_encode.c b/rnet_encode.c index ecb9732..404f0a9 100644 --- a/rnet_encode.c +++ b/rnet_encode.c @@ -26,6 +26,11 @@ #include "rnet_message.h" #include "decfile.h" +#define RNET_HEADER_START_2013 111 +#define RNET_HEADER_END_2013 (RNET_HEADER_SIZE_2013 - 15) +#define RNET_HEADER_START_2014 111 +#define RNET_HEADER_END_2014 (RNET_HEADER_SIZE_2014 - 15) + int rnet_encode(struct rnet_decfile *decfile, struct rnet_message **msg) { int r; @@ -43,6 +48,8 @@ int rnet_encode(struct rnet_decfile *decfile, struct rnet_message **msg) char *header; uint8_t ret; + size_t header_start, header_end; + *msg = rnet_message_new(); if (*msg == NULL) { return -ENOMEM; @@ -64,6 +71,16 @@ int rnet_encode(struct rnet_decfile *decfile, struct rnet_message **msg) versao_pgd = strtoul(rnet_decfile_get_header_field(decfile, "nr_versao"), NULL, 10); ret = strtoul(rnet_decfile_get_header_field(decfile, "in_ret"), NULL, 10); + if (!strcmp(ano, "2013")) { + header_start = RNET_HEADER_START_2013; + header_end = RNET_HEADER_END_2013; + } else if (!strcmp(ano, "2014")) { + header_start = RNET_HEADER_START_2014; + header_end = RNET_HEADER_END_2014; + } else { + return -EINVAL; + } + (*msg)->buffer[0] = 0x40; (*msg)->len = 1; r = rnet_message_add_u32(msg, "a_comp", 0); @@ -90,7 +107,7 @@ int rnet_encode(struct rnet_decfile *decfile, struct rnet_message **msg) r = rnet_message_add_ascii(msg, "origem", "JA2R"); r = rnet_message_add_ascii(msg, "so", "GNU"); r = rnet_message_add_ascii(msg, "cliente", "201104"); - r = rnet_message_add_buffer(msg, "dados_val", header + 111, 750 - 111); + r = rnet_message_add_buffer(msg, "dados_val", header + header_start, header_end - header_start); r = rnet_message_add_u32(msg, "tam_dados_val", 0); r = rnet_message_add_u32(msg, "tam_dados_val_chave", 0); r = rnet_message_add_u32(msg, "arquivos_restantes", 0);