diff --git a/src/network_engine.cpp b/src/network_engine.cpp index 93a6cf88b0ab39762bddba1003daabdde22b21ed..4d5602819dce8721bb77829358552406426fdd1c 100644 --- a/src/network_engine.cpp +++ b/src/network_engine.cpp @@ -218,7 +218,8 @@ NetworkEngine::requestStep(Sp<Request> sreq) node.getAddr()); if (err == ENETUNREACH || err == EHOSTUNREACH || - err == EAFNOSUPPORT) + err == EAFNOSUPPORT || + err == EPIPE) { node.setExpired(); if (not node.id) @@ -582,6 +583,9 @@ NetworkEngine::send(const char *buf, size_t len, int flags, const SockAddr& addr if (s < 0) return EAFNOSUPPORT; +#ifdef MSG_NOSIGNAL + flags &= MSG_NOSIGNAL; +#endif if (sendto(s, buf, len, flags, addr.get(), addr.getLength()) == -1) { int err = errno; DHT_LOG.e("Can't send message to %s: %s", addr.toString().c_str(), strerror(err));