Ignore fcntl failure when setting a write lock on a read only file.
diff --git a/server/fd.c b/server/fd.c
index f063b06..05347de 100644
--- a/server/fd.c
+++ b/server/fd.c
@@ -538,6 +538,12 @@
case EAGAIN:
set_error( STATUS_FILE_LOCK_CONFLICT );
return 0;
+ case EBADF:
+ /* this can happen if we try to set a write lock on a read-only file */
+ /* we just ignore that error */
+ if (fl.l_type == F_WRLCK) return 1;
+ set_error( STATUS_ACCESS_DENIED );
+ return 0;
case EOVERFLOW:
/* this can happen if off_t is 64-bit but the kernel only supports 32-bit */
/* in that case we shrink the limit and retry */