Fixed
Project:
Postmark Webhooks
Version:
1.x-dev
Component:
Code
Priority:
Normal
Category:
Bug report
Assigned:
Unassigned
Reporter:
Created:
19 Sep 2026 at 05:43 UTC
Updated:
19 Sep 2026 at 09:23 UTC
Jump to comment: Most recent
When a subscriber to the integration outbox throws, IntegrationOutbox::safeError() stores the exception message in last_error after one replacement: text shaped like name@host becomes [redacted]. The message is then cut to 255 characters and shown in Drush and the admin UI.
Subscriber errors usually come from an HTTP client, and those messages quote the request. A message such as POST https://host/hook?token=…&email=user%40example.com resulted in a 401 keeps the token, the host and the mailbox, because the mailbox is URL-encoded and has no @. The stored text is what the module calls sanitized.
last_error with the outbox Drush command: the query string and the encoded mailbox are there.Found by reading 1.x.
last_error values through the new sanitizer.None. last_error becomes less detailed.
Comments
Comment #2
jmcerdaCommitted to 1.x; ships in 1.2.0. The outbox no longer keeps any free text.
last_errorand the delivery-failure log line hold a fixed-format summary: the exception class, an HTTP status when the exception exposes one, and a reason code. The exception message is never read. The status is read without naming an HTTP client class, so no dependency is added. Update 10008 rewrites existing values in batches of 250, with no schema change, and the outbox Drush command applies the same rewrite on read until the update has run. Rundrush updatedb.last_erroris less detailed than before; log the cause in your subscriber if you need it.