[libgovirt] proxy: Fix persistent session with oVirt 3.6



commit 821c4c96edaeca300146137067533f86d6e0b065
Author: Christophe Fergeau <cfergeau redhat com>
Date:   Tue Jun 14 14:38:07 2016 +0200

    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 files changed, 2 insertions(+), 3 deletions(-)
---
diff --git a/govirt/ovirt-proxy.c b/govirt/ovirt-proxy.c
index fc0273f..08e42d2 100644
--- a/govirt/ovirt-proxy.c
+++ b/govirt/ovirt-proxy.c
@@ -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)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]