aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAllan Stephens <allan.stephens@windriver.com>2011-06-01 15:48:42 -0400
committerPaul Gortmaker <paul.gortmaker@windriver.com>2011-06-24 16:18:18 -0400
commitf55b564054e35dcd171e1191a477327528271f95 (patch)
tree303f49ddb2f42092f85afe10d90922fcabf5e004
parent1c1a551acb8b65f842824900b283a96462f907ab (diff)
tipc: Don't create payload message using connection protocol routine
Modifies the logic that creates a connection termination payload message so that it no longer (mis)uses a routine that creates a connection protocol message. The revised code is now more easily understood, and avoids setting several fields that are either not present in payload messages or were being set more than once. Signed-off-by: Allan Stephens <allan.stephens@windriver.com> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
-rw-r--r--net/tipc/port.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/net/tipc/port.c b/net/tipc/port.c
index 1b20b963a2f..ab0a8e97e31 100644
--- a/net/tipc/port.c
+++ b/net/tipc/port.c
@@ -539,14 +539,15 @@ void tipc_port_recv_proto_msg(struct sk_buff *buf)
539 if (!p_ptr || !p_ptr->connected || 539 if (!p_ptr || !p_ptr->connected ||
540 (port_peernode(p_ptr) != orignode) || 540 (port_peernode(p_ptr) != orignode) ||
541 (port_peerport(p_ptr) != origport)) { 541 (port_peerport(p_ptr) != origport)) {
542 r_buf = port_build_proto_msg(origport, 542 r_buf = tipc_buf_acquire(BASIC_H_SIZE);
543 orignode, 543 if (r_buf) {
544 destport, 544 msg = buf_msg(r_buf);
545 tipc_own_addr, 545 tipc_msg_init(msg, TIPC_HIGH_IMPORTANCE, TIPC_CONN_MSG,
546 TIPC_HIGH_IMPORTANCE, 546 BASIC_H_SIZE, orignode);
547 TIPC_CONN_MSG, 547 msg_set_errcode(msg, TIPC_ERR_NO_PORT);
548 TIPC_ERR_NO_PORT, 548 msg_set_origport(msg, destport);
549 0); 549 msg_set_destport(msg, origport);
550 }
550 if (p_ptr) 551 if (p_ptr)
551 tipc_port_unlock(p_ptr); 552 tipc_port_unlock(p_ptr);
552 goto exit; 553 goto exit;