aboutsummaryrefslogtreecommitdiffstats
path: root/hicn-light/src/hicn/core/forwarder.c
diff options
context:
space:
mode:
Diffstat (limited to 'hicn-light/src/hicn/core/forwarder.c')
-rw-r--r--hicn-light/src/hicn/core/forwarder.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/hicn-light/src/hicn/core/forwarder.c b/hicn-light/src/hicn/core/forwarder.c
index 4a31075f6..9954ecd0a 100644
--- a/hicn-light/src/hicn/core/forwarder.c
+++ b/hicn-light/src/hicn/core/forwarder.c
@@ -1130,7 +1130,11 @@ forwarder_receive(forwarder_t * forwarder, listener_t * listener,
uint8_t * packet = msgbuf_get_packet(msgbuf);
size_t size = msgbuf_get_len(msgbuf);
- assert(messageHandler_GetTotalPacketLength(packet) == size); // XXX confirm ?
+
+ // TODO: the assert fails
+ // size_t tmp = messageHandler_GetTotalPacketLength(packet);
+ // (void) tmp;
+ // assert(messageHandler_GetTotalPacketLength(packet) == size); // XXX confirm ?
/* Connection lookup */
const connection_table_t * table = forwarder_get_connection_table(listener->forwarder);
@@ -1179,11 +1183,13 @@ forwarder_receive(forwarder_t * forwarder, listener_t * listener,
return msgbuf_get_len(msgbuf);
case MSGBUF_TYPE_COMMAND:
- // XXX before it used to create the connection
+ // Create the connection to send the ack back
if (!connection_id_is_valid(msgbuf->connection_id))
- return forwarder_drop(forwarder, msgbuf_id);
- msgbuf->command.type = *(packet + 1); // XXX use header
- if (msgbuf->command.type >= COMMAND_TYPE_N) {
+ msgbuf->connection_id = listener_create_connection(listener, pair);
+
+ msg_header_t * msg = (msg_header_t*) packet;
+ msgbuf->command.type = msg->header.commandID;
+ if (msgbuf->command.type >= COMMAND_TYPE_N || msgbuf->command.type == COMMAND_TYPE_UNDEFINED) {
ERROR("Invalid command");
return -msgbuf_get_len(msgbuf);
}