You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.8 KiB
65 lines
1.8 KiB
1 month ago
|
From d60341b3355fd8825bec00792f301ef99d715a93 Mon Sep 17 00:00:00 2001
|
||
|
From: Zdenek Dohnal <zdohnal@redhat.com>
|
||
|
Date: Wed, 3 Apr 2024 10:39:24 +0200
|
||
|
Subject: [PATCH] scheduler: Fix sending response headers to client
|
||
|
|
||
|
Sometimes headers are not correctly copied into response to the client
|
||
|
(some are missing). It happens because `sent_header` is set prematurely
|
||
|
before the actual send happens. The present code in affected `cupsdWriteClient`
|
||
|
scope looks like code remains from CUPS 1.6.3.
|
||
|
|
||
|
With the change, testing via curl gives reliable results all time.
|
||
|
---
|
||
|
scheduler/client.c | 15 ++++-----------
|
||
|
1 file changed, 4 insertions(+), 11 deletions(-)
|
||
|
|
||
|
diff --git a/scheduler/client.c b/scheduler/client.c
|
||
|
index 62ac21c69..e7e312b8e 100644
|
||
|
--- a/scheduler/client.c
|
||
|
+++ b/scheduler/client.c
|
||
|
@@ -2400,23 +2400,12 @@ cupsdWriteClient(cupsd_client_t *con) /* I - Client connection */
|
||
|
httpSetField(con->http, field, value);
|
||
|
|
||
|
if (field == HTTP_FIELD_LOCATION)
|
||
|
- {
|
||
|
con->pipe_status = HTTP_STATUS_SEE_OTHER;
|
||
|
- con->sent_header = 2;
|
||
|
- }
|
||
|
- else
|
||
|
- con->sent_header = 1;
|
||
|
}
|
||
|
else if (!_cups_strcasecmp(con->header, "Status") && value)
|
||
|
- {
|
||
|
con->pipe_status = (http_status_t)atoi(value);
|
||
|
- con->sent_header = 2;
|
||
|
- }
|
||
|
else if (!_cups_strcasecmp(con->header, "Set-Cookie") && value)
|
||
|
- {
|
||
|
httpSetCookie(con->http, value);
|
||
|
- con->sent_header = 1;
|
||
|
- }
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
@@ -2451,6 +2440,8 @@ cupsdWriteClient(cupsd_client_t *con) /* I - Client connection */
|
||
|
cupsdCloseClient(con);
|
||
|
return;
|
||
|
}
|
||
|
+
|
||
|
+ con->sent_header = 1;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
@@ -2459,6 +2450,8 @@ cupsdWriteClient(cupsd_client_t *con) /* I - Client connection */
|
||
|
cupsdCloseClient(con);
|
||
|
return;
|
||
|
}
|
||
|
+
|
||
|
+ con->sent_header = 1;
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
--
|
||
|
2.44.0
|
||
|
|