patch-2.2.15 linux/net/x25/x25_link.c

Next file: linux/scripts/Menuconfig
Previous file: linux/net/x25/af_x25.c
Back to the patch index
Back to the overall index

diff -u --new-file --recursive --exclude-from ../../exclude v2.2.14/net/x25/x25_link.c linux/net/x25/x25_link.c
@@ -74,18 +74,25 @@
 	del_timer(&neigh->t20timer);
 }
 
+static int x25_t20timer_pending(struct x25_neigh *neigh)
+{
+	return timer_pending(&neigh->t20timer);
+}
+
 /*
  *	This handles all restart and diagnostic frames.
  */
 void x25_link_control(struct sk_buff *skb, struct x25_neigh *neigh, unsigned short frametype)
 {
 	struct sk_buff *skbn;
+	int confirm;
 
 	switch (frametype) {
 		case X25_RESTART_REQUEST:
+			confirm = !x25_t20timer_pending(neigh);
 			x25_stop_t20timer(neigh);
 			neigh->state = X25_LINK_STATE_3;
-			x25_transmit_restart_confirmation(neigh);
+			if (confirm) x25_transmit_restart_confirmation(neigh);
 			break;
 
 		case X25_RESTART_CONFIRMATION:

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)