Index: native_client_sdk/src/libraries/nacl_io/pipe/pipe_node.cc |
diff --git a/native_client_sdk/src/libraries/nacl_io/pipe/pipe_node.cc b/native_client_sdk/src/libraries/nacl_io/pipe/pipe_node.cc |
index aeb54d5d37f6e5c7cebe95d9791a495360310a02..ec25f2744c2038315142b7a1d1e0701195683874 100644 |
--- a/native_client_sdk/src/libraries/nacl_io/pipe/pipe_node.cc |
+++ b/native_client_sdk/src/libraries/nacl_io/pipe/pipe_node.cc |
@@ -20,9 +20,12 @@ const size_t kDefaultPipeSize = 512 * 1024; |
namespace nacl_io { |
PipeNode::PipeNode(Filesystem* fs) |
- : StreamNode(fs), pipe_(new PipeEventEmitter(kDefaultPipeSize)) {} |
+ : StreamNode(fs), pipe_(new PipeEventEmitter(kDefaultPipeSize)) { |
+} |
-EventEmitter* PipeNode::GetEventEmitter() { return pipe_.get(); } |
+PipeEventEmitter* PipeNode::GetEventEmitter() { |
+ return pipe_.get(); |
+} |
Error PipeNode::Read(const HandleAttr& attr, |
void* buf, |
@@ -32,10 +35,12 @@ Error PipeNode::Read(const HandleAttr& attr, |
EventListenerLock wait(GetEventEmitter()); |
Error err = wait.WaitOnEvent(POLLIN, ms); |
+ if (err == ETIMEDOUT) |
binji
2014/05/01 20:22:31
Do we want to do this everywhere?
If not, it stil
Sam Clegg
2014/05/01 22:16:55
There may be test code that expects otherwise but
|
+ err = EWOULDBLOCK; |
if (err) |
return err; |
- *out_bytes = pipe_->Read_Locked(static_cast<char*>(buf), count); |
+ *out_bytes = GetEventEmitter()->Read_Locked(static_cast<char*>(buf), count); |
return 0; |
} |
@@ -47,10 +52,13 @@ Error PipeNode::Write(const HandleAttr& attr, |
EventListenerLock wait(GetEventEmitter()); |
Error err = wait.WaitOnEvent(POLLOUT, ms); |
+ if (err == ETIMEDOUT) |
+ err = EWOULDBLOCK; |
if (err) |
return err; |
- *out_bytes = pipe_->Write_Locked(static_cast<const char*>(buf), count); |
+ *out_bytes = GetEventEmitter()->Write_Locked(static_cast<const char*>(buf), |
+ count); |
return 0; |
} |