2004-11-05 Jon Beniston <jon@beniston.com>
authorAndrew Cagney <cagney@redhat.com>
Thu, 11 Nov 2004 18:59:39 +0000 (18:59 +0000)
committerAndrew Cagney <cagney@redhat.com>
Thu, 11 Nov 2004 18:59:39 +0000 (18:59 +0000)
* remote.c (putpkt_binary) Fix PR gdb/1806. Send an ACK
when an unexpected packet is received, as the target stubs
continually retransmit the same packet until ACKed.

gdb/ChangeLog
gdb/remote.c

index f294ea8..82ccc9f 100644 (file)
@@ -1,7 +1,13 @@
+2004-11-05  Jon Beniston <jon@beniston.com>
+
+       * remote.c (putpkt_binary) Fix PR gdb/1806. Send an ACK 
+       when an unexpected packet is received, as the target stubs 
+       continually retransmit the same packet until ACKed.
+       
 2004-11-10  Randolph Chung  <tausq@debian.org>
 
        * frame.c (get_prev_frame): Use get_frame_type to retrieve the 
-    frame's type.
+       frame's type.
 
 2004-11-10  Randolph Chung  <tausq@debian.org>
 
index 5d1ac7f..c88a13c 100644 (file)
@@ -3972,9 +3972,12 @@ putpkt_binary (char *buf, int cnt)
              {
                if (remote_debug)
                  fprintf_unfiltered (gdb_stdlog, "Packet instead of Ack, ignoring it\n");
-               /* It's probably an old response, and we're out of sync.
-                  Just gobble up the packet and ignore it.  */
+               /* It's probably an old response sent because an ACK
+                  was lost.  Gobble up the packet and ack it so it
+                  doesn't get retransmitted when we resend this
+                  packet.  */
                read_frame (junkbuf, sizeof_junkbuf);
+               serial_write (remote_desc, "+", 1);
                continue;       /* Now, go look for + */
              }
            default: