Force md5 keyhash when needed.

Signed-off-by: Martin Bremmer <martin.bremmer@adlinktech.com>
This commit is contained in:
Martin Bremmer 2019-12-13 14:29:30 +01:00 committed by eboasson
parent 80d0be83e0
commit 91111af0ea
11 changed files with 67 additions and 11 deletions

View file

@ -295,5 +295,6 @@ const struct ddsi_serdata_ops ddsi_serdata_ops_builtintopic = {
.to_ser_unref = serdata_builtin_to_ser_unref,
.to_topicless = serdata_builtin_to_topicless,
.topicless_to_sample = serdata_builtin_topicless_to_sample,
.print = serdata_builtin_topic_print
.print = serdata_builtin_topic_print,
.get_keyhash = 0
};

View file

@ -1579,7 +1579,10 @@ void dds_stream_extract_keyhash (dds_istream_t * __restrict is, dds_keyhash_t *
const dds_topic_descriptor_t *desc = topic->type;
kh->m_set = 1;
if (desc->m_nkeys == 0)
{
kh->m_iskey = 1;
kh->m_keysize = 0;
}
else if (desc->m_flagset & DDS_TOPIC_FIXED_KEY)
{
dds_ostreamBE_t os;
@ -1592,12 +1595,14 @@ void dds_stream_extract_keyhash (dds_istream_t * __restrict is, dds_keyhash_t *
else
dds_stream_extract_keyBE_from_data (is, &os, topic);
assert (os.x.m_index <= 16);
kh->m_keysize = (unsigned)os.x.m_index & 0x1f;
}
else
{
dds_ostreamBE_t os;
ddsrt_md5_state_t md5st;
kh->m_iskey = 0;
kh->m_keysize = 16;
dds_ostreamBE_init (&os, 0);
if (just_key)
dds_stream_extract_keyBE_from_key (is, &os, topic);