summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2022-12-09 07:58:32 +0100
committerPatrick Griffis <pgriffis@igalia.com>2023-01-20 19:55:52 +0000
commit09b70ae1e37038e96c50240f340a5941706c8c5b (patch)
treead3f8ddaff5e72752f901ae311a5543cff594123
parent767c61f390840ba5c2c17a7fb3e49551816ceded (diff)
downloadlibsoup-09b70ae1e37038e96c50240f340a5941706c8c5b.tar.gz
soup-message: Publicize API to force HTTP/1 version for sending
This way also the libsoup library users can force HTTP/1 version only for some messages, not for the whole process (through the environment variable). Closes https://gitlab.gnome.org/GNOME/libsoup/-/issues/261
-rw-r--r--libsoup/soup-message.c39
-rw-r--r--libsoup/soup-message.h5
2 files changed, 44 insertions, 0 deletions
diff --git a/libsoup/soup-message.c b/libsoup/soup-message.c
index 4e6b28b9..ebe9e9f2 100644
--- a/libsoup/soup-message.c
+++ b/libsoup/soup-message.c
@@ -3316,3 +3316,42 @@ soup_message_is_misdirected_retry (SoupMessage *msg)
return priv->is_misdirected_retry;
}
+
+/**
+ * soup_message_set_force_http1:
+ * @msg: The #SoupMessage
+ * @value: value to set
+ *
+ * Sets whether HTTP/1 version should be used when sending this message.
+ * Some connections can still override it, if needed.
+ *
+ * Note the value is unset after the message send is finished.
+ *
+ * Since: 3.4
+ */
+void
+soup_message_set_force_http1 (SoupMessage *msg,
+ gboolean value)
+{
+ g_return_if_fail (SOUP_IS_MESSAGE (msg));
+
+ soup_message_set_force_http_version (msg, value ? SOUP_HTTP_1_1 : G_MAXUINT8);
+}
+
+/**
+ * soup_message_get_force_http1:
+ * @msg: The #SoupMessage
+ *
+ * Returns whether HTTP/1 version is currently demanded for the @msg send.
+ *
+ * Returns: %TRUE, when HTTP/1 is demanded, %FALSE otherwise.
+ *
+ * Since: 3.4
+ */
+gboolean
+soup_message_get_force_http1 (SoupMessage *msg)
+{
+ g_return_val_if_fail (SOUP_IS_MESSAGE (msg), FALSE);
+
+ return soup_message_get_force_http_version (msg) == SOUP_HTTP_1_1;
+}
diff --git a/libsoup/soup-message.h b/libsoup/soup-message.h
index 69b2088f..f94d736b 100644
--- a/libsoup/soup-message.h
+++ b/libsoup/soup-message.h
@@ -195,5 +195,10 @@ GSocketAddress *soup_message_get_remote_address (SoupMessage *msg);
SOUP_AVAILABLE_IN_ALL
SoupMessageMetrics *soup_message_get_metrics (SoupMessage *msg);
+SOUP_AVAILABLE_IN_3_4
+void soup_message_set_force_http1 (SoupMessage *msg,
+ gboolean value);
+SOUP_AVAILABLE_IN_3_4
+gboolean soup_message_get_force_http1 (SoupMessage *msg);
G_END_DECLS