mirror of
https://github.com/gotenberg/gotenberg.git
synced 2026-08-14 11:22:15 +01:00
webhook: resulting file was deleted because of defer outside of goroutine
This commit is contained in:
@@ -87,11 +87,12 @@ func newContext(r *resource) (context.Context, context.CancelFunc) {
|
||||
func print(c echo.Context, p printer.Printer, r *resource) error {
|
||||
baseFilename, err := rand.Get()
|
||||
if err != nil {
|
||||
return fmt.Errorf("getting result file name: %v", err)
|
||||
return hijackErr(fmt.Errorf("getting result file name: %v", err), r)
|
||||
}
|
||||
filename := fmt.Sprintf("%s.pdf", baseFilename)
|
||||
fpath := fmt.Sprintf("%s/%s", r.dirPath, filename)
|
||||
if r.webhookURL() == "" {
|
||||
defer r.removeAll()
|
||||
// if no webhook URL given, run conversion
|
||||
// and directly return the resulting PDF file
|
||||
// or an error.
|
||||
@@ -104,6 +105,7 @@ func print(c echo.Context, p printer.Printer, r *resource) error {
|
||||
// run the following lines in a goroutine so that
|
||||
// it doesn't block.
|
||||
go func() {
|
||||
defer r.removeAll()
|
||||
if err := p.Print(fpath); err != nil {
|
||||
c.Logger().Errorf("%v", err)
|
||||
return
|
||||
@@ -123,3 +125,10 @@ func print(c echo.Context, p printer.Printer, r *resource) error {
|
||||
}()
|
||||
return nil
|
||||
}
|
||||
|
||||
func hijackErr(err error, r *resource) error {
|
||||
if r != nil {
|
||||
defer r.removeAll()
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user