/*
- * Copyright (C) 2013 Thadeu Lima de Souza Cascardo <cascardo@minaslivre.org>
+ * Copyright (C) 2013-2014 Thadeu Lima de Souza Cascardo <cascardo@minaslivre.org>
+ * Copyright (C) 2014 Alexandre Oliva <lxoliva@fsfla.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
int rnet_encode(struct rnet_decfile *decfile, struct rnet_message **msg)
{
- int r;
+ int r = -EIO;
uint32_t tp_arq;
uint32_t id_dec;
file_len = rnet_decfile_get_file(decfile)->len;
hash = rnet_decfile_get_file_hash(decfile);
if (!hash)
- return -1;
+ goto out;
header = rnet_decfile_get_header(decfile);
codigo_recnet = rnet_decfile_get_header_field(decfile, "codigo_recnet");
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(exerc, "2014")) {
+ if (!strcmp(exerc, "2015")) {
+ header_size = RNET_HEADER_SIZE_2015;
+ header_head = RNET_HEADER_HEAD_2015;
+ header_tail = RNET_HEADER_TAIL_2015;
+ } else if (!strcmp(exerc, "2014")) {
header_size = RNET_HEADER_SIZE_2014;
header_head = RNET_HEADER_HEAD_2014;
header_tail = RNET_HEADER_TAIL_2014;
header_head = RNET_HEADER_HEAD_2013;
header_tail = RNET_HEADER_TAIL_2013;
} else {
- return -EINVAL;
+ r = -EINVAL;
+ goto out2;
}
/* This was already checked at parse time. */
free(hash);
if (r < 0)
- return r;
+ goto out;
return 0;
+
+out2:
+ free(hash);
+out:
+ rnet_message_del(*msg);
+ return r;
}