veyron/runtimes/google/ipc: Preventing addName and removeName cuasing panics
(nil s.names map) if called before Serve() or ServerDispatcher().
Return error instead.
Change-Id: I9eb68f62a2eedf90afa2e4c99d2c229c7febd52d
diff --git a/runtimes/google/ipc/server.go b/runtimes/google/ipc/server.go
index c30c097..2b4cd88 100644
--- a/runtimes/google/ipc/server.go
+++ b/runtimes/google/ipc/server.go
@@ -495,11 +495,14 @@
s.Lock()
defer s.Unlock()
ivtrace.FromContext(s.ctx).Annotate("Serving under name: " + name)
+ if len(name) == 0 {
+ return fmt.Errorf("empty name")
+ }
if s.stopped {
return errServerStopped
}
- if len(name) == 0 {
- return fmt.Errorf("empty name")
+ if s.disp == nil {
+ return fmt.Errorf("Adding name before calling Serve or ServeDispatcher is not allowed")
}
s.publisher.AddName(name)
// TODO(cnicolaou): remove this map when the publisher's RemoveName
@@ -515,6 +518,9 @@
if s.stopped {
return errServerStopped
}
+ if s.disp == nil {
+ return fmt.Errorf("Removing name before calling Serve or ServeDispatcher is not allowed")
+ }
if _, present := s.names[name]; !present {
return fmt.Errorf("%q has not been previously used for this server", name)
}