summaryrefslogtreecommitdiff
path: root/ace
diff options
context:
space:
mode:
authorirfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2000-05-11 07:11:11 +0000
committerirfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2000-05-11 07:11:11 +0000
commit52215332e899bce8c16ed5bd60f899c11964879a (patch)
tree14d66572fb9fb6fabf4f2807cb52f83d16c8a728 /ace
parentf0f1fd6ae3b6cd84870f5b3b7422cc672780b879 (diff)
downloadATCD-52215332e899bce8c16ed5bd60f899c11964879a.tar.gz
ChangeLogTag: Thu May 11 01:59:10 2000 Irfan Pyarali <irfan@cs.wustl.edu>
Diffstat (limited to 'ace')
-rw-r--r--ace/Pipe.cpp40
1 files changed, 29 insertions, 11 deletions
diff --git a/ace/Pipe.cpp b/ace/Pipe.cpp
index 33c8f47ea6f..e26d93f8706 100644
--- a/ace/Pipe.cpp
+++ b/ace/Pipe.cpp
@@ -58,6 +58,9 @@ ACE_Pipe::open (int buffer_size)
if (result == -1)
return -1;
+ this->handles_[0] = reader.get_handle ();
+ this->handles_[1] = writer.get_handle ();
+
# if !defined (ACE_LACKS_TCP_NODELAY)
int one = 1;
@@ -69,7 +72,10 @@ ACE_Pipe::open (int buffer_size)
TCP_NODELAY,
&one,
sizeof one) == -1)
- return -1;
+ {
+ this->close ();
+ return -1;
+ }
# endif /* ! ACE_LACKS_TCP_NODELAY */
# if defined (ACE_LACKS_SOCKET_BUFSIZ)
@@ -80,18 +86,21 @@ ACE_Pipe::open (int buffer_size)
ACE_reinterpret_cast (void *, &buffer_size),
sizeof (buffer_size)) == -1
&& errno != ENOTSUP)
- return -1;
+ {
+ this->close ();
+ return -1;
+ }
else if (writer.set_option (SOL_SOCKET,
SO_RCVBUF,
ACE_reinterpret_cast (void *, &buffer_size),
sizeof (buffer_size)) == -1
&& errno != ENOTSUP)
- return -1;
+ {
+ this->close ();
+ return -1;
+ }
# endif /* ! ACE_LACKS_SOCKET_BUFSIZ */
- this->handles_[0] = reader.get_handle ();
- this->handles_[1] = writer.get_handle ();
-
#elif defined (ACE_HAS_STREAM_PIPES)
ACE_UNUSED_ARG (buffer_size);
if (ACE_OS::pipe (this->handles_) == -1)
@@ -109,9 +118,12 @@ ACE_Pipe::open (int buffer_size)
|| ACE_OS::ioctl (this->handles_[1],
I_SRDOPT,
(void *) arg) == -1)
- ACE_ERROR_RETURN ((LM_ERROR,
- ACE_TEXT ("%p\n"),
- ACE_TEXT ("ioctl")), -1);
+ {
+ this->close ();
+ ACE_ERROR_RETURN ((LM_ERROR,
+ ACE_TEXT ("%p\n"),
+ ACE_TEXT ("ioctl")), -1);
+ }
#else /* ! ACE_WIN32 && ! ACE_LACKS_SOCKETPAIR && ! ACE_HAS_STREAM_PIPES */
if (ACE_OS::socketpair (AF_UNIX,
SOCK_STREAM,
@@ -131,14 +143,20 @@ ACE_Pipe::open (int buffer_size)
&buffer_size),
sizeof (buffer_size)) == -1
&& errno != ENOTSUP)
- return -1;
+ {
+ this->close ();
+ return -1;
+ }
if (ACE_OS::setsockopt (this->handles_[1],
SOL_SOCKET,
SO_SNDBUF,
ACE_reinterpret_cast (const char *, &buffer_size),
sizeof (buffer_size)) == -1
&& errno != ENOTSUP)
- return -1;
+ {
+ this->close ();
+ return -1;
+ }
# endif /* ! ACE_LACKS_SOCKET_BUFSIZ */
#endif /* ! ACE_WIN32 && ! ACE_LACKS_SOCKETPAIR && ! ACE_HAS_STREAM_PIPES */
// Point both the read and write HANDLES to the appropriate socket