mirror of
https://github.com/postgres/postgres.git
synced 2025-08-05 07:41:25 +03:00
Handle cancel requests with PID 0 gracefully
If the client sent a query cancel request with backend PID 0, it tripped an assertion. With assertions disabled, you got this in the log instead: LOG: invalid cancel request with PID 0 LOG: wrong key in cancel request for process 0 Query cancellations don't even require authentication, so we better tolerate bogus requests. Fix by turning the assertion into a regular runtime check. Spotted while testing libpq behavior with a modified server that didn't send BackendKeyData to the client. Backpatch-through: 18
This commit is contained in:
@@ -728,7 +728,11 @@ procsignal_sigusr1_handler(SIGNAL_ARGS)
|
|||||||
void
|
void
|
||||||
SendCancelRequest(int backendPID, const uint8 *cancel_key, int cancel_key_len)
|
SendCancelRequest(int backendPID, const uint8 *cancel_key, int cancel_key_len)
|
||||||
{
|
{
|
||||||
Assert(backendPID != 0);
|
if (backendPID == 0)
|
||||||
|
{
|
||||||
|
ereport(LOG, (errmsg("invalid cancel request with PID 0")));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* See if we have a matching backend. Reading the pss_pid and
|
* See if we have a matching backend. Reading the pss_pid and
|
||||||
|
Reference in New Issue
Block a user