Properly close the socket watcher
[govpp.git] / adapter / statsclient / statsclient.go
index 0b16a77..6231f69 100644 (file)
@@ -152,6 +152,7 @@ func (sc *StatsClient) Disconnect() error {
                return fmt.Errorf("unmapping shared memory failed: %v", err)
        }
        sc.headerData = nil
+       sc.done <- struct{}{}
 
        Log.Debugf("successfully unmapped shared memory")
        return nil
@@ -505,13 +506,17 @@ func (sc *StatsClient) getStatEntriesOnIndex(vector dirVector, indexes ...uint32
                if len(dirName) == 0 {
                        return
                }
+               var t adapter.StatType
                d := sc.CopyEntryData(dirPtr, ^uint32(0))
+               if d != nil {
+                       t = d.Type()
+               }
                entries = append(entries, adapter.StatEntry{
                        StatIdentifier: adapter.StatIdentifier{
                                Index: index,
                                Name:  dirName,
                        },
-                       Type:    d.Type(),
+                       Type:    t,
                        Data:    d,
                        Symlink: adapter.StatType(dirType) == adapter.Symlink,
                })