Hi,
The Outbound Only flag does not affect this case. The result of checking this flag will cause the reply to be discarded by the engine.
This particular case is deleting the message in client sms_ob_data and creating a new message. Setting to REPLY does not fix the issue as a REPLY is only applicable for replying to a message received. Changing code to create the outbound message as a reply does not change the result.
msgcopy appears to set up the message to allow it to be acked, however grmencode doesn’t have an option to copy the required attributes.
grmencode acts similar to msgcreate which is why I used it for the sample.
The steps for this case are:
* Send a message to the input thread.
* Message is routed to the client thread.
* In the sms_ob_data handle of ‘client’, original message is KILL and new Message is CONTINUE. (This is the cause of the issue)
* New message is sent to the server thread.
* in the sms_ib_data handle of ‘server’, a reply message is generated.
* Reply Ack message is sent back to the client thread.
* The Reply is being handled in sms_ib_data instead of sms_ib_reply
The below steps will work correctly:
* Send a message to the input thread.
* Message is routed to the client thread.
* In the sms_ob_data handle of ‘client’, new message is KILL and original Message is CONTINUE.
* Original message is sent to the server thread.
* in the sms_ib_data handle of ‘server’, a reply message is generated.
* Reply Ack message is sent back to the client thread.
* The Reply is being handled in sms_ib_reply
The workaround that I have found for this case is to put the code in an intermediate thread or the input thread.
I was just checking if this was a “feature” of cloverleaf or another bug that has been overlooked.