diff --git a/mms-lib/src/mms_codec.c b/mms-lib/src/mms_codec.c index 9cf778b..ad9fa3d 100644 --- a/mms-lib/src/mms_codec.c +++ b/mms-lib/src/mms_codec.c @@ -1083,8 +1083,11 @@ static gboolean mms_parse_headers(struct wsp_header_iter *iter, continue; /* Unsupported header, skip */ - if (entries[h].data == NULL) + if (entries[h].data == NULL) { + entries[h].pos = i; + entries[h].flags |= HEADER_FLAG_MARKED; continue; + } /* Skip multiply present headers unless explicitly requested */ if ((entries[h].flags & HEADER_FLAG_MARKED) && @@ -1195,7 +1198,9 @@ static gboolean decode_acknowledge_ind(struct wsp_header_iter *iter, static gboolean decode_delivery_ind(struct wsp_header_iter *iter, struct mms_message *out) { - return mms_parse_headers(iter, MMS_HEADER_MMS_VERSION, + return mms_parse_headers(iter, MMS_HEADER_TRANSACTION_ID, + HEADER_FLAG_PRESET_POS, NULL, + MMS_HEADER_MMS_VERSION, HEADER_FLAG_MANDATORY | HEADER_FLAG_PRESET_POS, &out->version, MMS_HEADER_MESSAGE_ID, @@ -1212,7 +1217,9 @@ static gboolean decode_delivery_ind(struct wsp_header_iter *iter, static gboolean decode_read_ind(struct wsp_header_iter *iter, struct mms_message *out) { - return mms_parse_headers(iter, MMS_HEADER_MMS_VERSION, + return mms_parse_headers(iter, MMS_HEADER_TRANSACTION_ID, + HEADER_FLAG_PRESET_POS, NULL, + MMS_HEADER_MMS_VERSION, HEADER_FLAG_MANDATORY | HEADER_FLAG_PRESET_POS, &out->version, MMS_HEADER_MESSAGE_ID, diff --git a/mms-lib/test/test_mms_codec/data/m-delivery.ind b/mms-lib/test/test_mms_codec/data/m-delivery_1.ind similarity index 100% rename from mms-lib/test/test_mms_codec/data/m-delivery.ind rename to mms-lib/test/test_mms_codec/data/m-delivery_1.ind diff --git a/mms-lib/test/test_mms_codec/data/m-delivery_2.ind b/mms-lib/test/test_mms_codec/data/m-delivery_2.ind new file mode 100644 index 0000000..3de92e2 Binary files /dev/null and b/mms-lib/test/test_mms_codec/data/m-delivery_2.ind differ diff --git a/mms-lib/test/test_mms_codec/test_mms_codec.c b/mms-lib/test/test_mms_codec/test_mms_codec.c index 6112f2b..c6255fa 100644 --- a/mms-lib/test/test_mms_codec/test_mms_codec.c +++ b/mms-lib/test/test_mms_codec/test_mms_codec.c @@ -60,7 +60,8 @@ int main(int argc, char* argv[]) "m-notification_2.ind", "m-notification_3.ind", "m-notification_4.ind", - "m-delivery.ind", + "m-delivery_1.ind", + "m-delivery_2.ind", "m-read-orig.ind", "m-retrieve_1.conf", "m-retrieve_2.conf",