731 // if needed, call vfs func for this operation |
731 // if needed, call vfs func for this operation |
732 if(exec_vfs) { |
732 if(exec_vfs) { |
733 int r = 0; |
733 int r = 0; |
734 if(type == WEBDAV_VFS_MKDIR) { |
734 if(type == WEBDAV_VFS_MKDIR) { |
735 r = vfs_mkdir(op->vfs, op->path); |
735 r = vfs_mkdir(op->vfs, op->path); |
|
736 if(r) { |
|
737 // mkcol specific status codes |
|
738 switch(op->vfs->vfs_errno) { |
|
739 case ENOENT: { |
|
740 op->rq->status_num = 409; |
|
741 break; |
|
742 } |
|
743 case EEXIST: { |
|
744 op->rq->status_num = 405; |
|
745 break; |
|
746 } |
|
747 case EACCES: { |
|
748 op->rq->status_num = 403; |
|
749 break; |
|
750 } |
|
751 default: op->rq->status_num = 500; |
|
752 } |
|
753 } |
736 } else if(type == WEBDAV_VFS_DELETE) { |
754 } else if(type == WEBDAV_VFS_DELETE) { |
737 r = webdav_vfs_unlink(op); |
755 r = webdav_vfs_unlink(op); |
738 } |
756 } |
739 |
757 |
740 if(r) { |
758 if(r) { |