[ merge ] patch from fischermi@t-online.de, GDB server endless loop
authorFabien Le Mentec <texane@gmail.com>
Thu, 27 Dec 2012 13:00:46 +0000 (07:00 -0600)
committerFabien Le Mentec <texane@gmail.com>
Thu, 27 Dec 2012 13:00:46 +0000 (07:00 -0600)
gdbserver/gdb-server.c

index 04490add664a088dd539dd54c439b40553659527..1b5fc84012d576eade99505a3610266657d5a197 100644 (file)
@@ -650,7 +650,8 @@ int serve(stlink_t *sl, int port) {
                perror("listen");
                return 1;
        }
-
+\r
+start_again:
        stlink_force_debug(sl);
        stlink_reset(sl);
        init_code_breakpoints(sl);
@@ -681,7 +682,7 @@ int serve(stlink_t *sl, int port) {
                int status = gdb_recv_packet(client, &packet);
                if(status < 0) {
                        fprintf(stderr, "cannot recv: %d\n", status);
-                       return 1;
+                       goto start_again;         
                }
 
                #ifdef DEBUG
@@ -1220,7 +1221,9 @@ int serve(stlink_t *sl, int port) {
                        int result = gdb_send_packet(client, reply);
                        if(result != 0) {
                                fprintf(stderr, "cannot send: %d\n", result);
-                               return 1;
+                               free(reply);
+                               free(packet);
+                               goto start_again;
                        }
 
                        free(reply);