diff -r d680536f8c2f -r 7b235fa88008 src/server/safs/service.c --- a/src/server/safs/service.c Sat Jan 21 16:37:35 2012 +0100 +++ b/src/server/safs/service.c Sat Jan 28 16:01:07 2012 +0100 @@ -141,6 +141,8 @@ } int service_hello(pblock *pb, Session *sn, Request *rq) { + pblock_removekey(pb_key_content_type, rq->srvhdrs); + pblock_nvinsert("content-type", "text/plain", rq->srvhdrs); pblock_nninsert("content-length", 13, rq->srvhdrs); protocol_status(sn, rq, 200, NULL); http_start_response(sn, rq); @@ -225,3 +227,18 @@ return REQ_PROCEED; } + +int send_options(pblock *pb, Session *sn, Request *rq) { + char *allow = "HEAD, GET, PUT, DELETE, TRACE, OPTIONS, MOVE, COPY, " + "PROPFIND, PROPPATCH, MKCOL, LOCK, UNLOCK, ACL, REPORT"; + char *dav = "1,2,access-control"; + + pblock_removekey(pb_key_content_type, rq->srvhdrs); + pblock_nvinsert("allow", allow, rq->srvhdrs); + pblock_nvinsert("dav", dav, rq->srvhdrs); + pblock_nninsert("content-length", 0, rq->srvhdrs); + protocol_status(sn, rq, 200, NULL); + http_start_response(sn, rq); + + return REQ_PROCEED; +}