mirror of
https://github.com/gotenberg/gotenberg.git
synced 2026-08-16 12:22:17 +01:00
fix(chromium): waitForSelector and waitForExpression poll indefinitely when the main page returns a bad HTTP status (e.g., 500)
This commit is contained in:
@@ -168,6 +168,7 @@ type eventResponseReceivedOptions struct {
|
||||
ignoreResourceHttpStatusDomains []string
|
||||
invalidResourceHttpStatusCode *error
|
||||
invalidResourceHttpStatusCodeMu *sync.RWMutex
|
||||
cancelOnMainPageError context.CancelFunc
|
||||
}
|
||||
|
||||
// listenForEventResponseReceived listens for an invalid HTTP status code
|
||||
@@ -206,6 +207,14 @@ func listenForEventResponseReceived(
|
||||
defer options.invalidHttpStatusCodeMu.Unlock()
|
||||
|
||||
*options.invalidHttpStatusCode = fmt.Errorf("%d: %s", ev.Response.Status, ev.Response.StatusText)
|
||||
|
||||
// Cancel the task context so that any in-flight wait
|
||||
// operations (waitForSelector, waitForExpression, etc.)
|
||||
// abort immediately instead of polling until timeout.
|
||||
// See https://github.com/gotenberg/gotenberg/issues/1492.
|
||||
if options.cancelOnMainPageError != nil {
|
||||
options.cancelOnMainPageError()
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
@@ -309,6 +318,7 @@ type eventLoadingFailedOptions struct {
|
||||
loadingFailedMu *sync.RWMutex
|
||||
resourceLoadingFailed *error
|
||||
resourceLoadingFailedMu *sync.RWMutex
|
||||
cancelOnMainPageError context.CancelFunc
|
||||
}
|
||||
|
||||
// listenForEventLoadingFailed listens for an event indicating that the main
|
||||
@@ -353,6 +363,13 @@ func listenForEventLoadingFailed(ctx context.Context, logger *slog.Logger, optio
|
||||
|
||||
*options.loadingFailed = fmt.Errorf("%s", ev.ErrorText)
|
||||
|
||||
// Cancel the task context so that any in-flight wait
|
||||
// operations abort immediately.
|
||||
// See https://github.com/gotenberg/gotenberg/issues/1492.
|
||||
if options.cancelOnMainPageError != nil {
|
||||
options.cancelOnMainPageError()
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user