[gvfs/wip/rishi/owncloud-gssapi: 2/2] dav, http: Support GSSAPI-enabled WebDAV mounts



commit 74c30d94dd593fa858848f3fd06274080325c78e
Author: Debarshi Ray <debarshir gnome org>
Date:   Sun Feb 21 21:48:50 2016 +0100

    dav, http: Support GSSAPI-enabled WebDAV mounts

 daemon/gvfsbackenddav.c  |   29 +++++++++++++++++++++++++++--
 daemon/gvfsbackendhttp.c |    3 +++
 2 files changed, 30 insertions(+), 2 deletions(-)
---
diff --git a/daemon/gvfsbackenddav.c b/daemon/gvfsbackenddav.c
index 37d55bc..8f6e1b8 100644
--- a/daemon/gvfsbackenddav.c
+++ b/daemon/gvfsbackenddav.c
@@ -423,7 +423,6 @@ redirect_handler (SoupMessage *msg, gpointer user_data)
              redirect = TRUE;
          }
 
-#if 0
        else if (msg->status_code == SOUP_STATUS_SEE_OTHER ||
                 msg->status_code == SOUP_STATUS_FOUND)
          {
@@ -436,7 +435,7 @@ redirect_handler (SoupMessage *msg, gpointer user_data)
            soup_message_headers_set_encoding (msg->request_headers,
                                               SOUP_ENCODING_NONE);
          }
-#endif
+
          /* ELSE:
           *
           * Two possibilities:
@@ -455,6 +454,32 @@ redirect_handler (SoupMessage *msg, gpointer user_data)
           * redirect on 308+ either.
           */
      }
+   else
+     {
+       if (msg->status_code == SOUP_STATUS_SEE_OTHER)
+         {
+           gchar *method;
+
+           g_object_get (msg, "method", &method, NULL);
+           g_message ("method: %s", method);
+           g_free (method);
+
+           if (msg->method == SOUP_METHOD_GET ||
+               msg->method == SOUP_METHOD_OPTIONS)
+             {
+               /* /\* Redirect using a GET *\/ */
+               /* g_object_set (msg, */
+               /*               SOUP_MESSAGE_METHOD, SOUP_METHOD_GET, */
+               /*               NULL); */
+               /* soup_message_set_request (msg, NULL, */
+               /*                           SOUP_MEMORY_STATIC, NULL, 0); */
+               /* soup_message_headers_set_encoding (msg->request_headers, */
+               /*                                    SOUP_ENCODING_NONE); */
+
+               redirect = TRUE;
+             }
+         }
+     }
 
     if (redirect)
       {
diff --git a/daemon/gvfsbackendhttp.c b/daemon/gvfsbackendhttp.c
index 317c8ed..8d8db67 100644
--- a/daemon/gvfsbackendhttp.c
+++ b/daemon/gvfsbackendhttp.c
@@ -718,6 +718,9 @@ g_vfs_backend_http_class_init (GVfsBackendHttpClass *klass)
 
   g_object_set (the_session, "ssl-strict", FALSE, NULL);
 
+  if (soup_auth_negotiate_supported)
+    soup_session_add_feature_by_type (the_session, SOUP_TYPE_AUTH_NEGOTIATE);
+
   /* Cookie handling - stored temporarlly in memory, mostly useful for
    * authentication in WebDAV. */
   cookie_jar = g_object_new (SOUP_TYPE_COOKIE_JAR, NULL);


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