summaryrefslogtreecommitdiff
path: root/src/socketengines/socketengine_pipe.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/socketengines/socketengine_pipe.cpp')
-rw-r--r--src/socketengines/socketengine_pipe.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/socketengines/socketengine_pipe.cpp b/src/socketengines/socketengine_pipe.cpp
index ee1069d57..0b319f0b0 100644
--- a/src/socketengines/socketengine_pipe.cpp
+++ b/src/socketengines/socketengine_pipe.cpp
@@ -16,8 +16,12 @@ int Pipe::SendInternal(const Anope::string &) const
Pipe::Pipe() : Socket()
{
int fds[2];
- if (pipe2(fds, O_NONBLOCK))
+ if (pipe(fds))
throw CoreException(Anope::string("Could not create pipe: ") + strerror(errno));
+ int flags = fcntl(fds[0], F_GETFL, 0);
+ fcntl(fds[0], F_SETFL, flags | O_NONBLOCK);
+ flags = fcntl(fds[1], F_GETFL, 0);
+ fcntl(fds[1], F_SETFL, flags | O_NONBLOCK);
this->Sock = fds[0];
this->WritePipe = fds[1];