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
* 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;
*/
if (ret < 0)
goto dispose_pipe_and_child;
if (ret < 0) {
/* Dispose pipes and child */
extf_stream_close_flag(stream, 1);
return ret;
}
stream_open = 1;
/* Make filter outlet non-blocking */
ret = fcntl(recv_pipe[0], F_GETFL);
if (ret != -1) {
ret |= O_NONBLOCK;
ret = fcntl(recv_pipe[0], F_SETFL, ret);
if (ret == -1) {
ret = ISO_FILE_ERROR;
goto dispose_pipe_and_child;
}
fcntl(recv_pipe[0], F_SETFL, ret);
}
/* Make filter sink non-blocking */
ret = fcntl(send_pipe[1], F_GETFL);
if (ret != -1) {
ret |= O_NONBLOCK;
ret = fcntl(send_pipe[1], F_SETFL, ret);
if (ret == -1) {
ret = ISO_FILE_ERROR;
goto dispose_pipe_and_child;
}
fcntl(send_pipe[1], F_SETFL, ret);
}
return 1;
dispose_pipe_and_child:;
extf_stream_close_flag(stream, 1);
return ret;
}
/* child */