Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Avoid to send/receive zero-size messages.
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Fri, 26 Aug 2022 09:09:30 +0000 (11:09 +0200)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Fri, 26 Aug 2022 09:09:30 +0000 (11:09 +0200)
There seems to be something broken with them on freebsd.

src/mc/api/RemoteApp.cpp
src/mc/remote/AppSide.cpp

index d7c1037..6cf19b0 100644 (file)
@@ -166,8 +166,10 @@ void RemoteApp::get_actors_status(std::map<aid_t, ActorState>& whereto) const
              (int)sizeof(answer));
 
   s_mc_message_actors_status_one_t status[answer.count];
-  received = model_checker_->channel().receive(&status, sizeof(status));
-  xbt_assert(static_cast<size_t>(received) == sizeof(status));
+  if (answer.count > 0) {
+    received = model_checker_->channel().receive(&status, sizeof(status));
+    xbt_assert(static_cast<size_t>(received) == sizeof(status));
+  }
 
   whereto.clear();
   for (auto const& actor : status)
index ec9e43a..690d190 100644 (file)
@@ -158,7 +158,8 @@ void AppSide::handle_actors_status() const
     i++;
   }
   xbt_assert(channel_.send(answer) == 0, "Could not send ACTORS_STATUS_REPLY msg");
-  xbt_assert(channel_.send(status, sizeof(status)) == 0, "Could not send ACTORS_STATUS_REPLY data");
+  if (answer.count > 0)
+    xbt_assert(channel_.send(status, sizeof(status)) == 0, "Could not send ACTORS_STATUS_REPLY data");
 }
 
 #define assert_msg_size(_name_, _type_)                                                                                \