MessageQ_put returns MessageQ_E_SHUTDOWN when transport fails
[ipc/ipcdev.git] / linux / src / api / MessageQ.c
index 9fba28790e90bb7571234d538a6fd29d16c7b4a0..13ab27d5be1f4e548e87a20b237d1b43aac323ce 100644 (file)
@@ -860,7 +860,9 @@ Int MessageQ_put(MessageQ_QueueId queueId, MessageQ_Msg msg)
             case INetworkTransport_TypeId:
                 netTrans = INetworkTransport_downCast(baseTrans);
                 delivered = INetworkTransport_put(netTrans, (Ptr)msg);
-                status = (delivered ? MessageQ_S_SUCCESS : MessageQ_E_FAIL);
+                status = (delivered ? MessageQ_S_SUCCESS :
+                          (errno == ESHUTDOWN ? MessageQ_E_SHUTDOWN :
+                           MessageQ_E_FAIL));
                 break;
 
             default:
@@ -886,7 +888,8 @@ Int MessageQ_put(MessageQ_QueueId queueId, MessageQ_Msg msg)
 
         msgTrans = MessageQ_module->transports[clusterId][priority];
         delivered = IMessageQTransport_put(msgTrans, (Ptr)msg);
-        status = (delivered ? MessageQ_S_SUCCESS : MessageQ_E_FAIL);
+        status = (delivered ? MessageQ_S_SUCCESS :
+                  (errno == ESHUTDOWN ? MessageQ_E_SHUTDOWN : MessageQ_E_FAIL));
     }
 
 done: