diff --git a/utils.cpp b/utils.cpp index 1e5f294..1b86e81 100644 --- a/utils.cpp +++ b/utils.cpp @@ -6,7 +6,11 @@ #if defined(ESP32) || defined(BUILD_FOR_RP2040) #include #include "rp2040.h" +#else +#include +#include #endif +#include #include #include @@ -23,6 +27,8 @@ #include "win32.h" #endif +#include "log.h" + void setBit(uint16_t & v, const int bit, const bool vb) { @@ -236,3 +242,14 @@ void update_word(uint16_t *const w, const bool msb, const uint8_t v) (*w) |= v; } } + +void set_nodelay(const int fd) +{ + int flags = 1; +#if defined(__FreeBSD__) || defined(ESP32) + if (setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, (void *)&flags, sizeof(flags)) == -1) +#else + if (setsockopt(fd, SOL_TCP, TCP_NODELAY, (void *)&flags, sizeof(flags)) == -1) +#endif + DOLOG(warning, true, "Cannot disable nagle algorithm"); +} diff --git a/utils.h b/utils.h index be27c83..b5590f2 100644 --- a/utils.h +++ b/utils.h @@ -25,3 +25,5 @@ ssize_t WRITE(int fd, const char *whereto, size_t len); ssize_t READ(int fd, char *whereto, size_t len); void update_word(uint16_t *const w, const bool msb, const uint8_t v); + +void set_nodelay(const int fd);