diff options
Diffstat (limited to 'hicn-light/src/hicn/core/forwarder.c')
-rw-r--r-- | hicn-light/src/hicn/core/forwarder.c | 16 |
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); } |