]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Add test for dht.NewServer and change StopServing to Close
authorMatt Joiner <anacrolix@gmail.com>
Thu, 21 Aug 2014 11:12:50 +0000 (21:12 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Thu, 21 Aug 2014 11:12:50 +0000 (21:12 +1000)
cmd/dht-get-peers/main.go
cmd/dht-server/main.go
dht/dht.go
dht/dht_test.go

index 779888b67d094fb8932b3d03082bfe78eeb4e445..440e88f21e5f4057dae3c006db0c90c213b5dbd3 100644 (file)
@@ -123,7 +123,7 @@ func setupSignals() {
        signal.Notify(ch, os.Interrupt)
        go func() {
                <-ch
-               s.StopServing()
+               s.Close()
        }()
 }
 
index d7140ffc33e42ff34eaf40525de698fccd6f067d..44e9c984dba40e8a3fefb685f8e8c5d1a1485754 100644 (file)
@@ -108,7 +108,7 @@ func setupSignals() {
        signal.Notify(ch)
        go func() {
                <-ch
-               s.StopServing()
+               s.Close()
        }()
 }
 
index c30ab942ae8d433953a1fede62c42df86a016956..b77324b05af87d8193c815be60c9d0e321b4b740 100644 (file)
@@ -45,6 +45,9 @@ func makeSocket(addr string) (socket *net.UDPConn, err error) {
 }
 
 func NewServer(c *ServerConfig) (s *Server, err error) {
+       if c == nil {
+               c = &ServerConfig{}
+       }
        s = &Server{}
        s.socket, err = makeSocket(c.Addr)
        if err != nil {
@@ -55,7 +58,15 @@ func NewServer(c *ServerConfig) (s *Server, err error) {
                return
        }
        go func() {
-               panic(s.serve())
+               err := s.serve()
+               select {
+               case <-s.closed:
+                       return
+               default:
+               }
+               if err != nil {
+                       panic(err)
+               }
        }()
        go func() {
                err := s.bootstrap()
@@ -787,13 +798,13 @@ func (s *Server) Nodes() (nis []NodeInfo) {
        return
 }
 
-func (s *Server) StopServing() {
-       s.socket.Close()
+func (s *Server) Close() {
        s.mu.Lock()
        select {
        case <-s.closed:
        default:
                close(s.closed)
+               s.socket.Close()
        }
        s.mu.Unlock()
 }
index 3db4b37d3b21c339a09780ff7192aa69840e7a68..18d2488c297de5ea8a538c697ef2f1b323a89487 100644 (file)
@@ -109,3 +109,11 @@ func TestClosestNodes(t *testing.T) {
 //             t.FailNow()
 //     }
 // }
+
+func TestDHTDefaultConfig(t *testing.T) {
+       s, err := NewServer(nil)
+       if err != nil {
+               t.Fatal(err)
+       }
+       s.Close()
+}