Skip to content

Commit

Permalink
Fix nasa#923, Perform appid lookup early
Browse files Browse the repository at this point in the history
Move the AppID lookup to be early in the CFE_SB_SendMsgFull implementation.
Avoids double locking between SB+ES and avoids a block-scope local variable.
  • Loading branch information
jphickey committed Sep 30, 2020
1 parent 8a7dc8f commit a4ffe5b
Showing 1 changed file with 7 additions and 9 deletions.
16 changes: 7 additions & 9 deletions fsw/cfe-core/src/sb/cfe_sb_api.c
Original file line number Diff line number Diff line change
Expand Up @@ -1197,6 +1197,7 @@ int32 CFE_SB_SendMsgFull(CFE_SB_Msg_t *MsgPtr,
CFE_SB_BufferD_t *BufDscPtr;
uint16 TotalMsgSize;
CFE_SB_MsgRouteIdx_t RtgTblIdx;
CFE_ES_ResourceID_t AppId;
CFE_ES_ResourceID_t TskId;
uint32 i;
char FullName[(OS_MAX_API_NAME * 2)];
Expand All @@ -1205,6 +1206,9 @@ int32 CFE_SB_SendMsgFull(CFE_SB_Msg_t *MsgPtr,

SBSndErr.EvtsToSnd = 0;

/* get app id for loopback testing */
CFE_ES_GetAppID(&AppId);

/* get task id for events and Sender Info*/
CFE_ES_GetTaskID(&TskId);

Expand Down Expand Up @@ -1356,16 +1360,10 @@ int32 CFE_SB_SendMsgFull(CFE_SB_Msg_t *MsgPtr,

PipeDscPtr = &CFE_SB.PipeTbl[DestPtr->PipeId];

if(PipeDscPtr->Opts & CFE_SB_PIPEOPTS_IGNOREMINE)
if((PipeDscPtr->Opts & CFE_SB_PIPEOPTS_IGNOREMINE) != 0 &&
CFE_ES_ResourceID_Equal(PipeDscPtr->AppId, AppId))
{
CFE_ES_ResourceID_t AppId;

CFE_ES_GetAppID(&AppId);

if( CFE_ES_ResourceID_Equal(PipeDscPtr->AppId, AppId) )
{
continue;
}
continue;
}/* end if */

/* if Msg limit exceeded, log event, increment counter */
Expand Down

0 comments on commit a4ffe5b

Please sign in to comment.