1
1

Fix lost message problem - if multiple messages are queued before the connection is formed, we lost all but the first one. Ensure that all messages get properly queued prior to completing the connection

cmr=v1.7.4:reviewer=jsquyres:subject=Fix lost message problem

This commit was SVN r30516.
Этот коммит содержится в:
Ralph Castain 2014-01-31 05:30:51 +00:00
родитель 4fb20c85cb
Коммит 993198cfba

Просмотреть файл

@ -413,10 +413,10 @@ static void process_send(int fd, short args, void *cbdata)
orte_process_name_t hop;
opal_output_verbose(2, orte_oob_base_framework.framework_output,
"%s:[%s:%d] processing send to peer %s",
"%s:[%s:%d] processing send to peer %s:%d",
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME),
__FILE__, __LINE__,
ORTE_NAME_PRINT(&op->msg->dst));
ORTE_NAME_PRINT(&op->msg->dst), op->msg->tag);
/* do we have a route to this peer (could be direct)? */
hop = orte_routed.get_route(&op->msg->dst);
@ -446,12 +446,13 @@ static void process_send(int fd, short args, void *cbdata)
goto cleanup;
}
/* add the message to the queue for sending after the
* connection is formed
*/
MCA_OOB_TCP_QUEUE_PENDING(op->msg, peer);
if (MCA_OOB_TCP_CONNECTING != peer->state &&
MCA_OOB_TCP_CONNECT_ACK != peer->state) {
/* add the message to the queue for sending after the
* connection is formed
*/
MCA_OOB_TCP_QUEUE_PENDING(op->msg, peer);
/* we have to initiate the connection - again, we do not
* want to block while the connection is created.
* So throw us into an event that will create