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);
 | 
			
		||||
  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);
 | 
			
		||||
  ddsrt_mutex_unlock (&wr->e.lock);
 | 
			
		||||
  ddsrt_free(data);
 | 
			
		||||
  ddsi_tkmap_instance_unref (gv->m_tkmap, tk);
 | 
			
		||||
  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;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  assert(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));
 | 
			
		||||
      match->matched = true;
 | 
			
		||||
      DDS_Security_DataHolderSeq_free(tseq);
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
      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);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -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));
 | 
			
		||||
      match->matched = true;
 | 
			
		||||
      DDS_Security_DataHolderSeq_free(tseq);
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
      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);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
{
 | 
			
		||||
  struct nn_rsample_chain sc;
 | 
			
		||||
  nn_reorder_result_t res;
 | 
			
		||||
  nn_reorder_result_t res = 0;
 | 
			
		||||
  int gap_was_valuable = 0;
 | 
			
		||||
  ASSERT_MUTEX_HELD (&pwr->e.lock);
 | 
			
		||||
 | 
			
		||||
  /* Clean up the defrag admin: no fragments of a missing sample will
 | 
			
		||||
     be arriving in the future */
 | 
			
		||||
  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)
 | 
			
		||||
      deliver_user_data_synchronously (&sc, NULL);
 | 
			
		||||
    else
 | 
			
		||||
      nn_dqueue_enqueue (pwr->dqueue, &sc, res);
 | 
			
		||||
    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)
 | 
			
		||||
        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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue