tipc: Don't create payload message using connection protocol routine
authorAllan Stephens <allan.stephens@windriver.com>
Wed, 1 Jun 2011 19:48:42 +0000 (15:48 -0400)
committerPaul Gortmaker <paul.gortmaker@windriver.com>
Fri, 24 Jun 2011 20:18:18 +0000 (16:18 -0400)
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>
net/tipc/port.c

index 1b20b963a2fc9f8644e6ada2e408caaf3dfa3213..ab0a8e97e315ae3e97b67dabeb0b24aae1ead01b 100644 (file)
@@ -539,14 +539,15 @@ void tipc_port_recv_proto_msg(struct sk_buff *buf)
        if (!p_ptr || !p_ptr->connected ||
            (port_peernode(p_ptr) != orignode) ||
            (port_peerport(p_ptr) != origport)) {
-               r_buf = port_build_proto_msg(origport,
-                                            orignode,
-                                            destport,
-                                            tipc_own_addr,
-                                            TIPC_HIGH_IMPORTANCE,
-                                            TIPC_CONN_MSG,
-                                            TIPC_ERR_NO_PORT,
-                                            0);
+               r_buf = tipc_buf_acquire(BASIC_H_SIZE);
+               if (r_buf) {
+                       msg = buf_msg(r_buf);
+                       tipc_msg_init(msg, TIPC_HIGH_IMPORTANCE, TIPC_CONN_MSG,
+                                     BASIC_H_SIZE, orignode);
+                       msg_set_errcode(msg, TIPC_ERR_NO_PORT);
+                       msg_set_origport(msg, destport);
+                       msg_set_destport(msg, origport);
+               }
                if (p_ptr)
                        tipc_port_unlock(p_ptr);
                goto exit;