From 2e31429e333c10d4d6a94b57d4d6c8d46ccf7a2d Mon Sep 17 00:00:00 2001 From: sin Date: Wed, 8 Oct 2014 20:52:33 +0100 Subject: Don't close a random fd if (f->rxstate == TRANSFER_INPROGRESS && (fd = openat(f->dirfd, ffiles[FFILE_OUT].name, ffiles[FFILE_OUT].flags, 0666)) == -1 && errno == ENXIO) { ... } else { close(fd); <--- not always appropriate! } --- ratox.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'ratox.c') diff --git a/ratox.c b/ratox.c index 7eaeb2e..de07738 100644 --- a/ratox.c +++ b/ratox.c @@ -1687,10 +1687,12 @@ loop(void) canceltxtransfer(f); cancelrxtransfer(f); } - if (f->rxstate == TRANSFER_INPROGRESS && - (fd = openat(f->dirfd, ffiles[FFILE_OUT].name, ffiles[FFILE_OUT].flags, 0666)) == -1 && - errno == ENXIO) { - cancelrxtransfer(f); + if (f->rxstate != TRANSFER_INPROGRESS) + continue; + fd = openat(f->dirfd, ffiles[FFILE_OUT].name, ffiles[FFILE_OUT].flags, 0666); + if (fd < 0) { + if (errno == ENXIO) + cancelrxtransfer(f); } else { close(fd); } -- cgit v1.2.3