# HG changeset patch # User Olaf Wintermann # Date 1664113227 -7200 # Node ID 224c4e8581258c5e0573767fbb1d9488dec19a48 # Parent 4d2a1df73e186d4c356d27f8aa7d0957bdeee72b fix mkcol not responding with correct status code in some cases diff -r 4d2a1df73e18 -r 224c4e858125 src/server/webdav/webdav.c --- a/src/server/webdav/webdav.c Sun Sep 25 15:23:08 2022 +0200 +++ b/src/server/webdav/webdav.c Sun Sep 25 15:40:27 2022 +0200 @@ -540,17 +540,20 @@ protocol_start_response(sn, rq); ret = REQ_PROCEED; } else { - int status_code = 500; - if(op->vfs->vfs_errno == EEXIST) { - // 405 (Method Not Allowed) - MKCOL can only be executed on an unmapped URL. - status_code = 405; - } else if(op->vfs->vfs_errno == ENOENT) { - // 409 (Conflict) - A collection cannot be made at the Request-URI until - // one or more intermediate collections have been created. The server - // MUST NOT create those intermediate collections automatically. - status_code = 409; + if(rq->status_num <= 0) { + int status_code = 500; + if(op->vfs->vfs_errno == EEXIST) { + // 405 (Method Not Allowed) - MKCOL can only be executed on an unmapped URL. + status_code = 405; + } else if(op->vfs->vfs_errno == ENOENT) { + // 409 (Conflict) - A collection cannot be made at the Request-URI until + // one or more intermediate collections have been created. The server + // MUST NOT create those intermediate collections automatically. + status_code = 409; + } + protocol_status(sn, rq, status_code, NULL); } - protocol_status(sn, rq, status_code, NULL); + } return ret;