aboutsummaryrefslogtreecommitdiffstats
path: root/net/tipc/socket.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/tipc/socket.c')
-rw-r--r--net/tipc/socket.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/net/tipc/socket.c b/net/tipc/socket.c
index 094cfdc1e2b6..89d6dc0f456d 100644
--- a/net/tipc/socket.c
+++ b/net/tipc/socket.c
@@ -1319,6 +1319,7 @@ static int __tipc_sendmsg(struct socket *sock, struct msghdr *m, size_t dlen)
1319 tsk->conn_type = dest->addr.name.name.type; 1319 tsk->conn_type = dest->addr.name.name.type;
1320 tsk->conn_instance = dest->addr.name.name.instance; 1320 tsk->conn_instance = dest->addr.name.name.instance;
1321 } 1321 }
1322 msg_set_syn(hdr, 1);
1322 } 1323 }
1323 1324
1324 seq = &dest->addr.nameseq; 1325 seq = &dest->addr.nameseq;
@@ -1478,6 +1479,7 @@ static void tipc_sk_finish_conn(struct tipc_sock *tsk, u32 peer_port,
1478 struct net *net = sock_net(sk); 1479 struct net *net = sock_net(sk);
1479 struct tipc_msg *msg = &tsk->phdr; 1480 struct tipc_msg *msg = &tsk->phdr;
1480 1481
1482 msg_set_syn(msg, 0);
1481 msg_set_destnode(msg, peer_node); 1483 msg_set_destnode(msg, peer_node);
1482 msg_set_destport(msg, peer_port); 1484 msg_set_destport(msg, peer_port);
1483 msg_set_type(msg, TIPC_CONN_MSG); 1485 msg_set_type(msg, TIPC_CONN_MSG);
@@ -2006,6 +2008,9 @@ static bool tipc_sk_filter_connect(struct tipc_sock *tsk, struct sk_buff *skb)
2006 return false; 2008 return false;
2007 case TIPC_LISTEN: 2009 case TIPC_LISTEN:
2008 /* Accept only SYN message */ 2010 /* Accept only SYN message */
2011 if (!msg_is_syn(hdr) &&
2012 tipc_node_get_capabilities(net, onode) & TIPC_SYN_BIT)
2013 return false;
2009 if (!con_msg && !err) 2014 if (!con_msg && !err)
2010 return true; 2015 return true;
2011 return false; 2016 return false;