WindhoverLabs / airliner

7 stars 3 forks source link

CF app didn't send the correct delivery_code in the FIN PDU for the Incoming Message. #331

Open ynielson opened 1 year ago

ynielson commented 1 year ago

When the CF app received the correct Incoming PDUs(MD/FD/EOF) with Class2 ACK Mode, it responded with ACK(NO-ERROR condition) PDU and sent FIN(NO-ERROR condition) PDU. But the delivery code in the FIN PDU was 0(DONT_CARE_0) instead of 2(DATA_COMPLETE).

In this test case, the function, m__all_data_has_been_received(), was called and the delivery code was set to 2(DATA_COMPLETE) : "mp->delivery_code = DATA_COMPLETE;". But I found that the FIN PDU structure assigned only 1 bit for the delivery_code, which doesn't allow 2. typedef struct { u_int_1 condition_code : 4; u_int_1 end_system_status : 1; u_int_1 delivery_code : 1; u_int_1 spare : 2; / TLVs (i.e. Filestore Responses) / } FIN;

This caused that this test case received FIN PDU with delivery code 0(DONT_CARE_0).