From 2ef3931c32d3edbc4ec22df3ead1876194efa697 Mon Sep 17 00:00:00 2001 From: Klaas Freitag Date: Mon, 14 May 2012 17:19:50 +0200 Subject: [PATCH] ownCloud: Added redirect ability. --- modules/csync_owncloud.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/modules/csync_owncloud.c b/modules/csync_owncloud.c index dfac647cc1..e9e778d17c 100644 --- a/modules/csync_owncloud.c +++ b/modules/csync_owncloud.c @@ -36,6 +36,7 @@ #include #include #include +#include #include "c_lib.h" #include "csync.h" @@ -400,6 +401,7 @@ static int dav_connect(const char *base_url) { ne_ssl_trust_default_ca( dav_session.ctx ); ne_ssl_set_verify( dav_session.ctx, verify_sslcert, 0 ); } + ne_redirect_register( dav_session.ctx ); _connected = 1; rc = 0; @@ -1176,6 +1178,8 @@ static csync_vio_method_handle_t *owncloud_opendir(const char *uri) { struct listdir_context *fetchCtx = NULL; struct resource *reslist = NULL; char *curi = _cleanPath( uri ); + char *redir_uri = NULL; + const ne_uri *redir_ne_uri = NULL; DEBUG_WEBDAV(("opendir method called on %s\n", uri )); @@ -1191,6 +1195,11 @@ static csync_vio_method_handle_t *owncloud_opendir(const char *uri) { rc = fetch_resource_list( curi, NE_DEPTH_ONE, fetchCtx ); if( rc != NE_OK ) { errno = ne_session_error_errno( dav_session.ctx ); + redir_ne_uri = ne_redirect_location(dav_session.ctx); + if( redir_ne_uri ) { + redir_uri = ne_uri_unparse(redir_ne_uri); + DEBUG_WEBDAV(("Permanently moved to %s\n", redir_uri)); + } return NULL; } else { fetchCtx->currResource = fetchCtx->list;