// YYYY-mm-dd HH:MM:SS TZOFF
strftime(buffer, sizeof(buffer), "%F %T %z", tm);
buffer[sizeof(buffer)-1] = '\0';
- return buffer;
+ return string(buffer);
}
uint16_t getShort(const unsigned char *p)
if(gethostname(tmp, MAXHOSTNAMELEN))
return "UNKNOWN";
- return tmp;
+ return string(tmp);
}
string itoa(int i)
(val >> 16)&0xff,
(val >> 8)&0xff,
(val )&0xff);
- return tmp;
+ return string(tmp);
}
return flags & O_NONBLOCK;
}
+bool setReceiveSocketErrors(int sock, int af)
+{
+#ifdef __linux__
+ int tmp = 1, ret;
+ if (af == AF_INET) {
+ ret = setsockopt(sock, IPPROTO_IP, IP_RECVERR, &tmp, sizeof(tmp));
+ } else {
+ ret = setsockopt(sock, IPPROTO_IPV6, IPV6_RECVERR, &tmp, sizeof(tmp));
+ }
+ if (ret < 0) {
+ throw PDNSException(string("Setsockopt failed: ") + strerror(errno));
+ }
+#endif
+ return true;
+}
+
// Closes a socket.
int closesocket( int socket )
{