Aleksandr Efimov has uploaded this change for review. ( 
http://gerrit.cloudera.org:8080/25016


Change subject: [net] preserve errno from failed recv()
......................................................................

[net] preserve errno from failed recv()

Socket::Recv() calls GetPeerAddress() before saving errno. If the
peer lookup also fails, it can replace the original receive error
with its own error, such as ENOTCONN.

Save errno before the peer lookup. Add a regression test that makes
GetPeerAddress() overwrite errno and verifies that Recv() returns
the original EAGAIN. The EOF path continues to report ESHUTDOWN.

Testing: socket-test, all 7 tests pass. The new regression test fails
with ENOTCONN instead of EAGAIN before the fix.

Change-Id: I9196b35ee15d2111379a5a504745e83c831b640b
---
M src/kudu/util/net/socket-test.cc
M src/kudu/util/net/socket.cc
2 files changed, 29 insertions(+), 1 deletion(-)



  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/16/25016/1
--
To view, visit http://gerrit.cloudera.org:8080/25016
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I9196b35ee15d2111379a5a504745e83c831b640b
Gerrit-Change-Number: 25016
Gerrit-PatchSet: 1
Gerrit-Owner: Aleksandr Efimov <[email protected]>

Reply via email to