server: avoid the tcl server crashing when there is no target
authorAustin Morton <austinpmorton@gmail.com>
Sat, 2 May 2015 22:00:37 +0000 (18:00 -0400)
committerPaul Fertser <fercerpav@gmail.com>
Sun, 17 May 2015 20:17:02 +0000 (21:17 +0100)
Since commit 1d0cf0df37a4e831ca3121ba8987d5848cad3e42
("server: tcl_notifications command") connecting to the tcl server
would terminate openocd. Fix this.

Change-Id: I36e2a7482f7db3a30ff7e9f969c3b6cda9599382
Signed-off-by: Austin Morton <austinpmorton@gmail.com>
Reviewed-on: http://openocd.zylin.com/2759
Tested-by: jenkins
Reviewed-by: Forest Crossman <cyrozap@gmail.com>
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
src/server/tcl_server.c
src/target/target.c
src/target/target.h

index d6828f12aab7da54076666ffb38d43cfad1d6d6f..65f71cc988f19f64c652b227bf0bb8c9b41e461d 100644 (file)
@@ -123,7 +123,7 @@ static int tcl_new_connection(struct connection *connection)
        memset(tclc, 0, sizeof(struct tcl_connection));
        connection->priv = tclc;
 
-       struct target *target = get_current_target(connection->cmd_ctx);
+       struct target *target = get_target_by_num(connection->cmd_ctx->current_target);
        if (target != NULL)
                tclc->tc_laststate = target->state;
 
index 27f8839fb4ec6b83abf1e00c83c279c693b81640..4ea445fe931b3f8d16ec019be3b38626b7f9423d 100644 (file)
@@ -486,7 +486,7 @@ struct target *get_target(const char *id)
 }
 
 /* returns a pointer to the n-th configured target */
-static struct target *get_target_by_num(int num)
+struct target *get_target_by_num(int num)
 {
        struct target *target = all_targets;
 
index 9382720b9693ef880fc04d9f1c415eb3e40a237b..7471c1b330657b27e6e7313a9277f0ef344a8274 100644 (file)
@@ -356,6 +356,7 @@ int target_call_timer_callbacks(void);
  */
 int target_call_timer_callbacks_now(void);
 
+struct target *get_target_by_num(int num);
 struct target *get_current_target(struct command_context *cmd_ctx);
 struct target *get_target(const char *id);