From: E. Scott Daniels Date: Wed, 26 Feb 2020 19:28:54 +0000 (-0500) Subject: Fix message marker for src reset on send/rts X-Git-Tag: 3.2.5^0 X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=20829ec38b851e7894883ba6b1711ccf8d05c3f4;p=ric-plt%2Flib%2Frmr.git Fix message marker for src reset on send/rts The SI95 receive function was not properly causing a message buffer to be marked as "receive generated" and if the msg buffer was subsequently used to send a message (e.g. return to sender) the correct source address was not placed into the message before sending. This change ensures that the message buffer received via SI95 are marked so that a send will set the source address when needed. Issue-ID: RIC-227 Signed-off-by: E. Scott Daniels Change-Id: Ic9c49834e5f066420463fa4568cfdf6f722f81cb --- diff --git a/CHANGES b/CHANGES index 795f4ed..40dad93 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,11 @@ API and build change and fix summaries. Doc correctsions and/or changes are not mentioned here; see the commit messages. +2020 February 26; version 3.2.5 + Fix source address bug in SI95 receive/send funcitons. + Fix threading issues involving session disconnection in SI95 + Remove unused SI95 status variable. + 2020 February 24; version 3.2.4 Fix meid bug (RIC-220) causing core dump. diff --git a/CMakeLists.txt b/CMakeLists.txt index a7276bb..03a441e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,7 +38,7 @@ cmake_minimum_required( VERSION 3.5 ) set( major_version "3" ) # should be automatically populated from git tag later, but until CI process sets a tag we use this set( minor_version "2" ) -set( patch_level "4" ) +set( patch_level "5" ) set( install_root "${CMAKE_INSTALL_PREFIX}" ) set( install_inc "include/rmr" ) diff --git a/src/rmr/si/src/rmr_si.c b/src/rmr/si/src/rmr_si.c index 6be4ffb..fa46ad7 100644 --- a/src/rmr/si/src/rmr_si.c +++ b/src/rmr/si/src/rmr_si.c @@ -700,7 +700,7 @@ static void* init( char* uproto_port, int max_msg_size, int flags ) { // finish all flag setting before threads to keep helgrind quiet ctx->flags |= CFL_MTC_ENABLED; // for SI threaded receiver is the only way - if( flags & FL_NOTHREAD ) { // thread set to off; no rout table collector started (could be called by the rtc thread itself) + if( flags & RMRFL_NOTHREAD ) { // thread set to off; no route table collector started (could be called by the rtc thread itself) ctx->rtable = rt_clone_space( NULL, NULL, 0 ); // creates an empty route table so that wormholes still can be used } else { if( static_rtc ) { @@ -875,6 +875,7 @@ extern rmr_mbuf_t* rmr_mt_rcv( void* vctx, rmr_mbuf_t* mbuf, int max_wait ) { } } + mbuf->flags |= MFL_ADDSRC; // turn on so if user app tries to send this buffer we reset src return mbuf; } @@ -919,6 +920,7 @@ extern rmr_mbuf_t* rmr_mt_rcv( void* vctx, rmr_mbuf_t* mbuf, int max_wait ) { if( DEBUG ) rmr_vlog( RMR_VL_DEBUG, " mt_rcv extracting from normal ring\n" ); if( (mbuf = (rmr_mbuf_t *) uta_ring_extract( ctx->mring )) != NULL ) { // pop if queued mbuf->state = RMR_OK; + mbuf->flags |= MFL_ADDSRC; // turn on so if user app tries to send this buffer we reset src if( ombuf ) { rmr_free_msg( ombuf ); // we cannot reuse as mbufs are queued on the ring