Start command now waits for synchronized requests too. This fixes if requests are made using different goroutines with synchronized requests.

It doesn't cause any issues on concurrent requests because we already wait for them.
This commit is contained in:
Musab Gültekin 2021-04-19 12:58:47 +03:00
parent d28beca57a
commit 3c9a3849e2

View File

@ -222,10 +222,10 @@ func (g *Geziyor) Do(req *client.Request, callback func(g *Geziyor, r *client.Re
if g.shutdown { if g.shutdown {
return return
} }
g.wgRequests.Add(1)
if req.Synchronized { if req.Synchronized {
g.do(req, callback) g.do(req, callback)
} else { } else {
g.wgRequests.Add(1)
go g.do(req, callback) go g.do(req, callback)
} }
} }
@ -234,9 +234,7 @@ func (g *Geziyor) Do(req *client.Request, callback func(g *Geziyor, r *client.Re
func (g *Geziyor) do(req *client.Request, callback func(g *Geziyor, r *client.Response)) { func (g *Geziyor) do(req *client.Request, callback func(g *Geziyor, r *client.Response)) {
g.acquireSem(req) g.acquireSem(req)
defer g.releaseSem(req) defer g.releaseSem(req)
if !req.Synchronized { defer g.wgRequests.Done()
defer g.wgRequests.Done()
}
defer g.recoverMe() defer g.recoverMe()
for _, middlewareFunc := range g.reqMiddlewares { for _, middlewareFunc := range g.reqMiddlewares {