diff --git a/src/java/davmail/caldav/CaldavConnection.java b/src/java/davmail/caldav/CaldavConnection.java index 51a4a393..6d1d7073 100644 --- a/src/java/davmail/caldav/CaldavConnection.java +++ b/src/java/davmail/caldav/CaldavConnection.java @@ -205,6 +205,8 @@ public class CaldavConnection extends AbstractConnection { handleFolder(request); } else if (request.isPath(1, "directory")) { sendDirectory(request); + } else if (request.isPath(1, ".well-known")) { + sendWellKnown(request); } else { sendUnsupported(request); } @@ -885,6 +887,18 @@ public class CaldavConnection extends AbstractConnection { response.close(); } + /** + * Send caldav response for /.well-known/ request. + * + * @param request Caldav request + * @throws IOException on error + */ + public void sendWellKnown(CaldavRequest request) throws IOException { + HashMap headers = new HashMap(); + headers.put("Location", "/"); + sendHttpResponse(HttpStatus.SC_MOVED_PERMANENTLY, headers); + } + /** * Send Caldav principal response. * diff --git a/src/test/davmail/caldav/TestCaldav.java b/src/test/davmail/caldav/TestCaldav.java index ee6c55fd..71171834 100644 --- a/src/test/davmail/caldav/TestCaldav.java +++ b/src/test/davmail/caldav/TestCaldav.java @@ -334,4 +334,13 @@ public class TestCaldav extends AbstractDavMailTestCase { httpClient.executeMethod(moveMethod); } + public void testWellKnown() throws IOException { + DavPropertyNameSet davPropertyNameSet = new DavPropertyNameSet(); + davPropertyNameSet.add(DavPropertyName.create("current-user-principal", Namespace.getNamespace("DAV:"))); + PropFindMethod method = new PropFindMethod("/.well-known/caldav", davPropertyNameSet, 0); + httpClient.executeMethod(method); + assertEquals(HttpStatus.SC_MOVED_PERMANENTLY, method.getStatusCode()); + } + + }