From b345eb38998bf332381f803fdbf95edf5a6ccdf4 Mon Sep 17 00:00:00 2001 From: Cenk Alti Date: Wed, 26 Dec 2018 18:15:05 +0300 Subject: [PATCH] split listenAndServe into 2 functions --- frontend/udp/frontend.go | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/frontend/udp/frontend.go b/frontend/udp/frontend.go index bc5b421..5831213 100644 --- a/frontend/udp/frontend.go +++ b/frontend/udp/frontend.go @@ -84,8 +84,13 @@ func NewFrontend(logic frontend.TrackerLogic, cfg Config) (*Frontend, error) { }, } + err := f.listen() + if err != nil { + return nil, err + } + go func() { - if err := f.listenAndServe(); err != nil { + if err := f.serve(); err != nil { log.Fatal("failed while serving udp", log.Err(err)) } }() @@ -112,19 +117,18 @@ func (t *Frontend) Stop() stop.Result { return c.Result() } -// listenAndServe blocks while listening and serving UDP BitTorrent requests -// until Stop() is called or an error is returned. -func (t *Frontend) listenAndServe() error { +func (t *Frontend) listen() error { udpAddr, err := net.ResolveUDPAddr("udp", t.Addr) if err != nil { return err } - t.socket, err = net.ListenUDP("udp", udpAddr) - if err != nil { - return err - } + return err +} +// listenAndServe blocks while listening and serving UDP BitTorrent requests +// until Stop() is called or an error is returned. +func (t *Frontend) serve() error { pool := bytepool.New(2048) t.wg.Add(1)