Browse Source

apply sebastian's fix for bug 859. Apparently on win32 one must lock at least one byte when locking, but locking a nonexistant byte is okay. )

svn:r17244
Nick Mathewson 15 years ago
parent
commit
a95e0e7355
2 changed files with 8 additions and 2 deletions
  1. 6 0
      ChangeLog
  2. 2 2
      src/common/compat.c

+ 6 - 0
ChangeLog

@@ -1,3 +1,9 @@
+Changes in version 0.2.1.8-alpha - 2008-??-??
+  o Minor bugfixes:
+    - Get file locking working on win32.  Bugfix on 0.2.1.6-alpha.  Fixes
+      bug 859.
+
+
 Changes in version 0.2.1.7-alpha - 2008-11-08
   o Security fixes:
     - The "ClientDNSRejectInternalAddresses" config option wasn't being

+ 2 - 2
src/common/compat.c

@@ -508,7 +508,7 @@ tor_lockfile_lock(const char *filename, int blocking, int *locked_out)
   }
 #ifdef WIN32
   _lseek(fd, 0, SEEK_SET);
-  if (_locking(fd, blocking ? _LK_LOCK : _LK_NBLCK, 0) < 0) {
+  if (_locking(fd, blocking ? _LK_LOCK : _LK_NBLCK, 1) < 0) {
     if (errno != EDEADLOCK)
       log_warn(LD_FS,"Couldn't lock \"%s\": %s", filename, strerror(errno));
     else
@@ -542,7 +542,7 @@ tor_lockfile_unlock(tor_lockfile_t *lockfile)
   log_info(LD_FS, "Unlocking \"%s\"", lockfile->filename);
 #ifdef WIN32
   _lseek(lockfile->fd, 0, SEEK_SET);
-  if (_locking(lockfile->fd, _LK_UNLCK, 0) < 0) {
+  if (_locking(lockfile->fd, _LK_UNLCK, 1) < 0) {
     log_warn(LD_FS,"Error unlocking \"%s\": %s", lockfile->filename,
              strerror(errno));
   }