| From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 |
| From: Christophe Fergeau <cfergeau@redhat.com> |
| Date: Tue, 14 Jun 2016 14:38:07 +0200 |
| Subject: [PATCH] proxy: Fix persistent session with oVirt 3.6 |
| |
| commit d3683c2 "proxy: Only set 'Prefer: persistent-auth' with |
| jsession-id" was working as expected when using the |
| OvirtProxy::jsession-id and OvirtProxy::sso-token properties. |
| |
| However, when not using these properties and expecting the jsessionid to |
| be set as a cookie during a regular HTTP session, this was not working |
| properly as oVirt is not sending a jsessionid cookie when Prefer: |
| persistent-auth is not set. |
| |
| Consequently, we need to set it upon OvirtProxy creation in order not to |
| break this usecase. We don't add the header in RestProxyCall as was done |
| before as we want to be able to disable this addition after |
| OvirtProxy::sso-token has been set. |
| |
| govirt/ovirt-proxy.c | 5 ++--- |
| 1 file changed, 2 insertions(+), 3 deletions(-) |
| |
| diff --git a/govirt/ovirt-proxy.c b/govirt/ovirt-proxy.c |
| index fc0273f..08e42d2 100644 |
| |
| |
| @@ -801,9 +801,6 @@ static void ovirt_proxy_set_session_id(OvirtProxy *proxy, const char *session_id |
| cookie = soup_cookie_new("JSESSIONID", session_id, domain, "/ovirt-engine/api", -1); |
| soup_cookie_jar_add_cookie(proxy->priv->cookie_jar, cookie); |
| proxy->priv->jsessionid_cookie = cookie; |
| - ovirt_proxy_add_header(proxy, "Prefer", "persistent-auth"); |
| - } else { |
| - ovirt_proxy_add_header(proxy, "Prefer", NULL); |
| } |
| g_free(url); |
| } |
| @@ -815,6 +812,7 @@ static void ovirt_proxy_set_sso_token(OvirtProxy *proxy, const char *sso_token) |
| g_free(proxy->priv->sso_token); |
| proxy->priv->sso_token = g_strdup(sso_token); |
| |
| + ovirt_proxy_add_header(proxy, "Prefer", NULL); |
| header_value = g_strdup_printf("Bearer %s", sso_token); |
| ovirt_proxy_add_header(proxy, "Authorization", header_value); |
| g_free(header_value); |
| @@ -903,6 +901,7 @@ static void ovirt_proxy_constructed(GObject *gobject) |
| g_warning("Disabling strict checking of SSL certificates"); |
| g_object_set(OVIRT_PROXY(gobject), "ssl-strict", FALSE, NULL); |
| } |
| + ovirt_proxy_add_header(OVIRT_PROXY(gobject), "Prefer", "persistent-auth"); |
| |
| /* Chain up to the parent class */ |
| if (G_OBJECT_CLASS(ovirt_proxy_parent_class)->constructed) |