diff options
author | Sebastien Douheret <sebastien.douheret@iot.bzh> | 2017-12-12 10:15:23 +0100 |
---|---|---|
committer | Sebastien Douheret <sebastien.douheret@iot.bzh> | 2017-12-12 10:15:23 +0100 |
commit | 273743466fa39a14bf7abf73f30427406684f3d3 (patch) | |
tree | dfdc7f8bcaddcaf69534f4b16052944767a7feb5 /gdb-xds.go | |
parent | 752d0492fa653f8485f38b9f6d9a60a3145fd119 (diff) |
Fixed crash on xds-agent or server disconnection (IOT-108)
Diffstat (limited to 'gdb-xds.go')
-rw-r--r-- | gdb-xds.go | 24 |
1 files changed, 24 insertions, 0 deletions
@@ -255,6 +255,25 @@ func (g *GdbXds) Init() (int, error) { } }) + // Monitor XDS server configuration changes (and specifically connected status) + iosk.On(xaapiv1.EVTServerConfig, func(ev xaapiv1.EventMsg) { + svrCfg, err := ev.DecodeServerCfg() + if err == nil && !svrCfg.Connected { + // TODO: should wait that server will be connected back + if g.cbOnExit != nil { + g.cbOnExit(-1, fmt.Errorf("XDS Server disconnected")) + } else { + fmt.Printf("XDS Server disconnected") + os.Exit(-1) + } + } + }) + + args := xaapiv1.EventRegisterArgs{Name: xaapiv1.EVTServerConfig} + if err := g.httpCli.Post("/events/register", args, nil); err != nil { + return 0, err + } + return 0, nil } @@ -304,6 +323,11 @@ func (g *GdbXds) Start(inferiorTTY bool) (int, error) { // except if XDS_GDBSERVER_OUTPUT_NOFIX is defined _, gdbserverNoFix := os.LookupEnv("XDS_GDBSERVER_OUTPUT_NOFIX") + // SDK ID must be set else $GDB cannot be resolved + if g.sdkID == "" { + return int(syscall.EINVAL), fmt.Errorf("sdkid must be set") + } + args := xaapiv1.ExecArgs{ ID: g.prjID, SdkID: g.sdkID, |