diff --git a/core/federated/RTI/rti_remote.c b/core/federated/RTI/rti_remote.c index f3d540115..f26be4b66 100644 --- a/core/federated/RTI/rti_remote.c +++ b/core/federated/RTI/rti_remote.c @@ -787,8 +787,8 @@ void handle_address_query(uint16_t fed_id) { // the port number because it has not yet received an MSG_TYPE_ADDRESS_ADVERTISEMENT message // from this federate. In that case, it will respond by sending -1. - // Response message is also of type MSG_TYPE_ADDRESS_QUERY. - buffer[0] = MSG_TYPE_ADDRESS_QUERY; + // Response message is MSG_TYPE_ADDRESS_QUERY_REPLY. + buffer[0] = MSG_TYPE_ADDRESS_QUERY_REPLY; // Encode the port number. federate_info_t *remote_fed = GET_FED_INFO(remote_fed_id); diff --git a/core/federated/federate.c b/core/federated/federate.c index 46c5b89ed..0c9a7a578 100644 --- a/core/federated/federate.c +++ b/core/federated/federate.c @@ -1751,7 +1751,7 @@ void lf_connect_to_federate(uint16_t remote_federate_id) { "Failed to read the requested port number for federate %d from RTI.", remote_federate_id); - if (buffer[0] != MSG_TYPE_ADDRESS_QUERY) { + if (buffer[0] != MSG_TYPE_ADDRESS_QUERY_REPLY) { // Unexpected reply. Could be that RTI has failed and sent a resignation. if (buffer[0] == MSG_TYPE_FAILED) { lf_print_error_and_exit("RTI has failed."); @@ -2699,8 +2699,8 @@ int lf_send_tagged_message(environment_t* env, if (message_type == MSG_TYPE_P2P_TAGGED_MESSAGE) { lf_print_warning("Failed to send message to %s. Dropping the message.", next_destination_str); } else { - lf_print_error_system_failure("Failed to send message to %s. Connection lost to the RTI.", - next_destination_str); + lf_print_error_system_failure("Failed to send message to %s with error code %d (%s). Connection lost to the RTI.", + next_destination_str, errno, strerror(errno)); } } LF_MUTEX_UNLOCK(&lf_outbound_socket_mutex); diff --git a/include/core/federated/network/net_common.h b/include/core/federated/network/net_common.h index 8f2bc3f5a..d5d4b9307 100644 --- a/include/core/federated/network/net_common.h +++ b/include/core/federated/network/net_common.h @@ -525,12 +525,20 @@ THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * Byte identifying a address query message, sent by a federate to RTI * to ask for another federate's address and port number. * The next two bytes are the other federate's ID. - * The reply from the RTI will a port number (an int32_t), which is -1 + */ +#define MSG_TYPE_ADDRESS_QUERY 13 + +/** + * Byte identifying a address query message reply, sent by a RTI to a federate + * to reply with a remote federate's address and port number. + * The reply from the RTI will be a port number (an int32_t), which is -1 * if the RTI does not know yet (it has not received MSG_TYPE_ADDRESS_ADVERTISEMENT from * the other federate), followed by the IP address of the other * federate (an IPV4 address, which has length INET_ADDRSTRLEN). + * The next four bytes (or sizeof(int32_t)) will be the port number. + * The next four bytes (or sizeof(in_addr), which is uint32_t) will be the ip address. */ -#define MSG_TYPE_ADDRESS_QUERY 13 +#define MSG_TYPE_ADDRESS_QUERY_REPLY 14 /** * Byte identifying a message advertising the port for the TCP connection server @@ -540,7 +548,7 @@ THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * The sending federate will not wait for a response from the RTI and assumes its * request will be processed eventually by the RTI. */ -#define MSG_TYPE_ADDRESS_ADVERTISEMENT 14 +#define MSG_TYPE_ADDRESS_ADVERTISEMENT 15 /** * Byte identifying a first message that is sent by a federate directly to another federate @@ -551,7 +559,7 @@ THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * federate does not expect this federate or federation to connect, it will respond * instead with MSG_TYPE_REJECT. */ -#define MSG_TYPE_P2P_SENDING_FED_ID 15 +#define MSG_TYPE_P2P_SENDING_FED_ID 16 /** * Byte identifying a message to send directly to another federate. @@ -562,7 +570,7 @@ THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * The four bytes after will be the length of the message. * The ramaining bytes are the message. */ -#define MSG_TYPE_P2P_MESSAGE 16 +#define MSG_TYPE_P2P_MESSAGE 17 /** * Byte identifying a timestamped message to send directly to another federate. @@ -579,7 +587,7 @@ THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * The next four bytes will be the microstep of the sender. * The ramaining bytes are the message. */ -#define MSG_TYPE_P2P_TAGGED_MESSAGE 17 +#define MSG_TYPE_P2P_TAGGED_MESSAGE 18 //////////////////////////////////////////////// /**