Correct misplaced lock
Signed-off-by: Marcel Jordense <marcel.jordense@adlinktech.com>
This commit is contained in:
parent
4960fbf94c
commit
1dad535bc0
3 changed files with 17 additions and 15 deletions
|
@ -296,10 +296,10 @@ static bool write_crypto_exchange_message(const struct participant *pp, const dd
|
||||||
};
|
};
|
||||||
serdata = ddsi_serdata_from_sample (gv->rawcdr_topic, SDK_DATA, &raw);
|
serdata = ddsi_serdata_from_sample (gv->rawcdr_topic, SDK_DATA, &raw);
|
||||||
tk = ddsi_tkmap_lookup_instance_ref (gv->m_tkmap, serdata);
|
tk = ddsi_tkmap_lookup_instance_ref (gv->m_tkmap, serdata);
|
||||||
ddsrt_mutex_unlock (&wr->e.lock);
|
|
||||||
ddsrt_free(data);
|
|
||||||
|
|
||||||
r = write_sample_p2p_wrlock_held(wr, seq, NULL, serdata, tk, prd);
|
r = write_sample_p2p_wrlock_held(wr, seq, NULL, serdata, tk, prd);
|
||||||
|
ddsrt_mutex_unlock (&wr->e.lock);
|
||||||
|
ddsrt_free(data);
|
||||||
ddsi_tkmap_instance_unref (gv->m_tkmap, tk);
|
ddsi_tkmap_instance_unref (gv->m_tkmap, tk);
|
||||||
ddsi_serdata_unref (serdata);
|
ddsi_serdata_unref (serdata);
|
||||||
|
|
||||||
|
|
|
@ -1829,7 +1829,6 @@ bool q_omg_is_similar_participant_security_info(struct participant *pp, struct p
|
||||||
proxypp->security_info.plugin_security_attributes = pp_security_info.plugin_security_attributes;
|
proxypp->security_info.plugin_security_attributes = pp_security_info.plugin_security_attributes;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
assert(matching);
|
|
||||||
return matching;
|
return matching;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2504,10 +2503,10 @@ void q_omg_security_set_remote_writer_crypto_tokens(struct reader *rd, const dds
|
||||||
{
|
{
|
||||||
GVTRACE("set_remote_writer_crypto_tokens "PGUIDFMT" with reader "PGUIDFMT"\n", PGUID(pwr->e.guid), PGUID(rd->e.guid));
|
GVTRACE("set_remote_writer_crypto_tokens "PGUIDFMT" with reader "PGUIDFMT"\n", PGUID(pwr->e.guid), PGUID(rd->e.guid));
|
||||||
match->matched = true;
|
match->matched = true;
|
||||||
DDS_Security_DataHolderSeq_free(tseq);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
EXCEPTION_ERROR(sc, &exception, "Failed to set remote writer crypto tokens "PGUIDFMT" for reader "PGUIDFMT, PGUID(pwr->e.guid), PGUID(rd->e.guid));
|
EXCEPTION_ERROR(sc, &exception, "Failed to set remote writer crypto tokens "PGUIDFMT" for reader "PGUIDFMT, PGUID(pwr->e.guid), PGUID(rd->e.guid));
|
||||||
|
DDS_Security_DataHolderSeq_free(tseq);
|
||||||
}
|
}
|
||||||
ddsrt_mutex_unlock(&rd->e.lock);
|
ddsrt_mutex_unlock(&rd->e.lock);
|
||||||
|
|
||||||
|
@ -2551,10 +2550,10 @@ void q_omg_security_set_remote_reader_crypto_tokens(struct writer *wr, const dds
|
||||||
{
|
{
|
||||||
GVTRACE("set_remote_reader_crypto_tokens "PGUIDFMT" with writer "PGUIDFMT"\n", PGUID(prd->e.guid), PGUID(wr->e.guid));
|
GVTRACE("set_remote_reader_crypto_tokens "PGUIDFMT" with writer "PGUIDFMT"\n", PGUID(prd->e.guid), PGUID(wr->e.guid));
|
||||||
match->matched = true;
|
match->matched = true;
|
||||||
DDS_Security_DataHolderSeq_free(tseq);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
EXCEPTION_ERROR(sc, &exception, "Failed to set remote reader crypto tokens "PGUIDFMT" for writer "PGUIDFMT, PGUID(prd->e.guid), PGUID(wr->e.guid));
|
EXCEPTION_ERROR(sc, &exception, "Failed to set remote reader crypto tokens "PGUIDFMT" for writer "PGUIDFMT, PGUID(prd->e.guid), PGUID(wr->e.guid));
|
||||||
|
DDS_Security_DataHolderSeq_free(tseq);
|
||||||
}
|
}
|
||||||
ddsrt_mutex_unlock(&wr->e.lock);
|
ddsrt_mutex_unlock(&wr->e.lock);
|
||||||
|
|
||||||
|
|
|
@ -1649,23 +1649,26 @@ static int handle_InfoTS (const struct receiver_state *rst, const InfoTS_t *msg,
|
||||||
static int handle_one_gap (struct proxy_writer *pwr, struct pwr_rd_match *wn, seqno_t a, seqno_t b, struct nn_rdata *gap, int *refc_adjust)
|
static int handle_one_gap (struct proxy_writer *pwr, struct pwr_rd_match *wn, seqno_t a, seqno_t b, struct nn_rdata *gap, int *refc_adjust)
|
||||||
{
|
{
|
||||||
struct nn_rsample_chain sc;
|
struct nn_rsample_chain sc;
|
||||||
nn_reorder_result_t res;
|
nn_reorder_result_t res = 0;
|
||||||
int gap_was_valuable = 0;
|
int gap_was_valuable = 0;
|
||||||
ASSERT_MUTEX_HELD (&pwr->e.lock);
|
ASSERT_MUTEX_HELD (&pwr->e.lock);
|
||||||
|
|
||||||
/* Clean up the defrag admin: no fragments of a missing sample will
|
/* Clean up the defrag admin: no fragments of a missing sample will
|
||||||
be arriving in the future */
|
be arriving in the future */
|
||||||
if (!(wn && wn->filtered))
|
if (!(wn && wn->filtered))
|
||||||
nn_defrag_notegap (pwr->defrag, a, b);
|
|
||||||
|
|
||||||
/* Primary reorder: the gap message may cause some samples to become
|
|
||||||
deliverable. */
|
|
||||||
if ((res = nn_reorder_gap (&sc, pwr->reorder, gap, a, b, refc_adjust)) > 0)
|
|
||||||
{
|
{
|
||||||
if (pwr->deliver_synchronously)
|
nn_defrag_notegap (pwr->defrag, a, b);
|
||||||
deliver_user_data_synchronously (&sc, NULL);
|
|
||||||
else
|
/* Primary reorder: the gap message may cause some samples to become
|
||||||
nn_dqueue_enqueue (pwr->dqueue, &sc, res);
|
deliverable. */
|
||||||
|
|
||||||
|
if ((res = nn_reorder_gap (&sc, pwr->reorder, gap, a, b, refc_adjust)) > 0)
|
||||||
|
{
|
||||||
|
if (pwr->deliver_synchronously)
|
||||||
|
deliver_user_data_synchronously (&sc, NULL);
|
||||||
|
else
|
||||||
|
nn_dqueue_enqueue (pwr->dqueue, &sc, res);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If the result was REJECT or TOO_OLD, then this gap didn't add
|
/* If the result was REJECT or TOO_OLD, then this gap didn't add
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue