X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/rhodes/blobdiff_plain/2fb3f7e2bf2c444707ce5a81f0b54260d240f4bf..75c2c06a8c9545871fefbe3e57ff283023c37e07:/rhodes diff --git a/rhodes b/rhodes index 092e97a..b9d97fa 100755 --- a/rhodes +++ b/rhodes @@ -286,7 +286,7 @@ def maybe_cleanup_worker(dir, db, pid): def maybe_kill_worker(dir, pid): f = OS.path.join(dir, 'lk.%d' % pid) - try: fd = OS.open(f, OS.O_RDONLY) + try: fd = OS.open(f, OS.O_RDWR) except OSError, err: if err.errno != E.ENOENT: raise ExpectedError, 'open lockfile: %s' % err return @@ -466,7 +466,8 @@ def step(dir, cmd, *args): ## we lose a bunch of work. :-( c.execute("""SELECT pid FROM workers WHERE p = ? AND k = ?""", (str(p), k)) - for pid, in c: maybe_kill_worker(dir, pid) + for pid, in c: + if pid != mypid: maybe_kill_worker(dir, pid) c.execute("""DELETE FROM workers WHERE p = ? AND k = ?""", (str(p), k - 1)) c.execute("""DELETE FROM points WHERE p = ? AND k = ?""", @@ -490,7 +491,8 @@ def step(dir, cmd, *args): p, n = C.MP(pstr), C.MP(nstr) qq.append(p**e) nn.append(n) - n = C.MPCRT(qq).solve(nn) + if len(qq) == 1: n = nn[0] + else: n = C.MPCRT(qq).solve(nn) ## One last check that this is the right answer. xx = G.pow(g, n)