diff --git a/peer/http3/server.go b/peer/http3/server.go index da8f485..2147421 100644 --- a/peer/http3/server.go +++ b/peer/http3/server.go @@ -70,7 +70,11 @@ func (s *Server) Start(address string) error { } r := mux.NewRouter() r.HandleFunc("/get/{hash}", func(w http.ResponseWriter, r *http.Request) { - enqueue(&blobRequest{request: r, reply: w}) + waiter := stop.New() + enqueue(&blobRequest{request: r, reply: w, finished: waiter}) + select { + case <-waiter.Ch(): + } }) r.HandleFunc("/has/{hash}", func(w http.ResponseWriter, r *http.Request) { vars := mux.Vars(r) diff --git a/peer/http3/worker.go b/peer/http3/worker.go index 182ca08..62c4c4d 100644 --- a/peer/http3/worker.go +++ b/peer/http3/worker.go @@ -9,8 +9,9 @@ import ( ) type blobRequest struct { - request *http.Request - reply http.ResponseWriter + request *http.Request + reply http.ResponseWriter + finished *stop.Group } var getReqCh = make(chan *blobRequest) @@ -37,4 +38,5 @@ func enqueue(b *blobRequest) { func process(server *Server, r *blobRequest) { server.HandleGetBlob(r.reply, r.request) + r.finished.Done() }