Commit 87694f24 authored by Subodh Iyengar's avatar Subodh Iyengar Committed by Facebook Github Bot

Allow unsetting errmsgcallback

Summary:
Unset the error message callbacks when err
message so that we dont deliver errors when
not needed

Reviewed By: yfeldblum

Differential Revision: D7661052

fbshipit-source-id: 5a2330b2cd11f844649d56343307e2c75b626bdc
parent 7c6f1f55
...@@ -199,7 +199,7 @@ void AsyncUDPSocket::dontFragment(bool df) { ...@@ -199,7 +199,7 @@ void AsyncUDPSocket::dontFragment(bool df) {
void AsyncUDPSocket::setErrMessageCallback( void AsyncUDPSocket::setErrMessageCallback(
ErrMessageCallback* errMessageCallback) { ErrMessageCallback* errMessageCallback) {
errMessageCallback_ = errMessageCallback; errMessageCallback_ = errMessageCallback;
int err = 1; int err = (errMessageCallback_ != nullptr);
#if defined(IP_RECVERR) #if defined(IP_RECVERR)
if (address().getFamily() == AF_INET && if (address().getFamily() == AF_INET &&
fsp::setsockopt(fd_, IPPROTO_IP, IP_RECVERR, &err, sizeof(err))) { fsp::setsockopt(fd_, IPPROTO_IP, IP_RECVERR, &err, sizeof(err))) {
......
...@@ -359,6 +359,18 @@ TEST_F(AsyncUDPSocketTest, TestErrToNonExistentServer) { ...@@ -359,6 +359,18 @@ TEST_F(AsyncUDPSocketTest, TestErrToNonExistentServer) {
EXPECT_TRUE(errRecvd); EXPECT_TRUE(errRecvd);
} }
TEST_F(AsyncUDPSocketTest, TestUnsetErrCallback) {
socket_->resumeRead(&readCb);
socket_->setErrMessageCallback(&err);
socket_->setErrMessageCallback(nullptr);
folly::SocketAddress addr("127.0.0.1", 10000);
EXPECT_CALL(err, errMessage(_)).Times(0);
socket_->write(addr, folly::IOBuf::copyBuffer("hey"));
evb_.timer().scheduleTimeoutFn(
[&] { evb_.terminateLoopSoon(); }, std::chrono::milliseconds(30));
evb_.loopForever();
}
TEST_F(AsyncUDPSocketTest, CloseInErrorCallback) { TEST_F(AsyncUDPSocketTest, CloseInErrorCallback) {
socket_->resumeRead(&readCb); socket_->resumeRead(&readCb);
socket_->setErrMessageCallback(&err); socket_->setErrMessageCallback(&err);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment