提交 acc631bf 编写于 作者: A Allan Stephens 提交者: Paul Gortmaker

tipc: Standardize exit logic for message rejection handling

Modifies the routine that handles the rejection of payload messages
so that it has a single exit point that frees up the rejected message,
thereby eliminating some duplicated code.
Signed-off-by: NAllan Stephens <allan.stephens@windriver.com>
Signed-off-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
上级 7ae4738e
......@@ -367,10 +367,8 @@ int tipc_reject_msg(struct sk_buff *buf, u32 err)
imp++;
/* discard rejected message if it shouldn't be returned to sender */
if (msg_errcode(msg) || msg_dest_droppable(msg)) {
buf_discard(buf);
return data_sz;
}
if (msg_errcode(msg) || msg_dest_droppable(msg))
goto exit;
/* construct rejected message */
if (msg_mcast(msg))
......@@ -378,10 +376,9 @@ int tipc_reject_msg(struct sk_buff *buf, u32 err)
else
hdr_sz = LONG_H_SIZE;
rbuf = tipc_buf_acquire(data_sz + hdr_sz);
if (rbuf == NULL) {
buf_discard(buf);
return data_sz;
}
if (rbuf == NULL)
goto exit;
rmsg = buf_msg(rbuf);
tipc_msg_init(rmsg, imp, msg_type(msg), hdr_sz, msg_orignode(msg));
msg_set_errcode(rmsg, err);
......@@ -411,9 +408,11 @@ int tipc_reject_msg(struct sk_buff *buf, u32 err)
tipc_net_route_msg(abuf);
}
/* send rejected message */
buf_discard(buf);
/* send returned message & dispose of rejected message */
tipc_net_route_msg(rbuf);
exit:
buf_discard(buf);
return data_sz;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册