Revoking previous change. It differs from the handling of F_GETFL failure.

So O_NONBLOCK is intended to be nice to have but not mandatory.
This commit is contained in:
Thomas Schmitt 2015-10-13 11:02:11 +02:00
parent e8b94e7b50
commit 6047464b6b
1 changed files with 8 additions and 17 deletions

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2009 - 2015 Thomas Schmitt * Copyright (c) 2009 - 2011 Thomas Schmitt
* *
* This file is part of the libisofs project; you can redistribute it and/or * This file is part of the libisofs project; you can redistribute it and/or
* modify it under the terms of the GNU General Public License version 2 * modify it under the terms of the GNU General Public License version 2
@ -243,34 +243,25 @@ int extf_stream_open_flag(IsoStream *stream, int flag)
ret= ISO_FILE_READ_ERROR; ret= ISO_FILE_READ_ERROR;
*/ */
if (ret < 0) if (ret < 0) {
goto dispose_pipe_and_child; /* Dispose pipes and child */
extf_stream_close_flag(stream, 1);
return ret;
}
stream_open = 1; stream_open = 1;
/* Make filter outlet non-blocking */ /* Make filter outlet non-blocking */
ret = fcntl(recv_pipe[0], F_GETFL); ret = fcntl(recv_pipe[0], F_GETFL);
if (ret != -1) { if (ret != -1) {
ret |= O_NONBLOCK; ret |= O_NONBLOCK;
ret = fcntl(recv_pipe[0], F_SETFL, ret); fcntl(recv_pipe[0], F_SETFL, ret);
if (ret == -1) {
ret = ISO_FILE_ERROR;
goto dispose_pipe_and_child;
}
} }
/* Make filter sink non-blocking */ /* Make filter sink non-blocking */
ret = fcntl(send_pipe[1], F_GETFL); ret = fcntl(send_pipe[1], F_GETFL);
if (ret != -1) { if (ret != -1) {
ret |= O_NONBLOCK; ret |= O_NONBLOCK;
ret = fcntl(send_pipe[1], F_SETFL, ret); fcntl(send_pipe[1], F_SETFL, ret);
if (ret == -1) {
ret = ISO_FILE_ERROR;
goto dispose_pipe_and_child;
}
} }
return 1; return 1;
dispose_pipe_and_child:;
extf_stream_close_flag(stream, 1);
return ret;
} }
/* child */ /* child */