mirror of
https://github.com/gabime/spdlog.git
synced 2024-12-26 10:31:34 +08:00
Handling SPDLOG_PREVENT_CHILD_FD in tcp_sink
Adding SOCK_CLOEXEC to socket Fixing bug in sink_it_ (bytes_sent not added to buffer)
This commit is contained in:
parent
9f24f4bc69
commit
eef981e05f
@ -47,7 +47,7 @@ protected:
|
|||||||
size_t bytes_sent = 0;
|
size_t bytes_sent = 0;
|
||||||
while (bytes_sent < formatted.size())
|
while (bytes_sent < formatted.size())
|
||||||
{
|
{
|
||||||
auto write_result = ::write(sock_, formatted.data(), formatted.size() - bytes_sent);
|
auto write_result = ::write(sock_, formatted.data() + bytes_sent, formatted.size() - bytes_sent);
|
||||||
if (write_result < 0)
|
if (write_result < 0)
|
||||||
{
|
{
|
||||||
SPDLOG_THROW(spdlog::spdlog_ex("write(2) failed", errno));
|
SPDLOG_THROW(spdlog::spdlog_ex("write(2) failed", errno));
|
||||||
@ -88,7 +88,12 @@ private:
|
|||||||
int last_errno = 0;
|
int last_errno = 0;
|
||||||
for (auto *rp = addrinfo_result; rp != nullptr; rp = rp->ai_next)
|
for (auto *rp = addrinfo_result; rp != nullptr; rp = rp->ai_next)
|
||||||
{
|
{
|
||||||
socket_rv = ::socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol);
|
#ifdef SPDLOG_PREVENT_CHILD_FD
|
||||||
|
int const flags = SOCK_CLOEXEC;
|
||||||
|
#else
|
||||||
|
int const flags = 0;
|
||||||
|
#endif
|
||||||
|
socket_rv = ::socket(rp->ai_family, rp->ai_socktype | flags, rp->ai_protocol);
|
||||||
if (socket_rv == -1)
|
if (socket_rv == -1)
|
||||||
{
|
{
|
||||||
last_errno = errno;
|
last_errno = errno;
|
||||||
|
Loading…
Reference in New Issue
Block a user