|
@@ -866,6 +866,14 @@ static void tipc_sk_proto_rcv(struct tipc_sock *tsk, struct sk_buff *skb,
|
|
if (!tsk_peer_msg(tsk, hdr))
|
|
if (!tsk_peer_msg(tsk, hdr))
|
|
goto exit;
|
|
goto exit;
|
|
|
|
|
|
|
|
+ if (unlikely(msg_errcode(hdr))) {
|
|
|
|
+ tipc_set_sk_state(sk, TIPC_DISCONNECTING);
|
|
|
|
+ tipc_node_remove_conn(sock_net(sk), tsk_peer_node(tsk),
|
|
|
|
+ tsk_peer_port(tsk));
|
|
|
|
+ sk->sk_state_change(sk);
|
|
|
|
+ goto exit;
|
|
|
|
+ }
|
|
|
|
+
|
|
tsk->probe_unacked = false;
|
|
tsk->probe_unacked = false;
|
|
|
|
|
|
if (mtyp == CONN_PROBE) {
|
|
if (mtyp == CONN_PROBE) {
|