ソースを参照

Fix #333455 - Workaround IPTOS_LOWDELAY not supported

- check IPTOS_LOWDELAY define in configure
- generate a config.h
- include the generated config.h in modbus.c
Stéphane Raimbault 16 年 前
コミット
1d6ab32ea5
4 ファイル変更10 行追加0 行削除
  1. 2 0
      NEWS
  2. 4 0
      configure.ac
  3. 1 0
      src/Makefile.am
  4. 3 0
      src/modbus.c

+ 2 - 0
NEWS

@@ -7,6 +7,8 @@ libmodbus 2.2.0 (2009-05-01)
 - modbus_param_t is smaller (2 int removed)
 - Better error management
 - Faster
+- Fix #333455 reported by Jeff Laughlin
+  Cygwin IPTOS_LOWDELAY not supported on cygwin
 
 libmodbus 2.0.3 (2009-03-22)
 ============================

+ 4 - 0
configure.ac

@@ -4,6 +4,7 @@
 AC_PREREQ(2.59)
 AC_INIT(libmodbus, 2.0.3, stephane.raimbault@gmail.com)
 AC_CONFIG_SRCDIR([src/modbus.c])
+AC_CONFIG_HEADERS([config.h])
 AM_INIT_AUTOMAKE
 AM_DISABLE_STATIC
 
@@ -25,6 +26,9 @@ AC_HEADER_TIME
 AC_TYPE_UINT16_T
 AC_TYPE_UINT32_T
 AC_TYPE_UINT8_T
+AC_CHECK_DECLS([IPTOS_LOWDELAY],
+               [have_iptos_lowdelay=yes], [have_iptos_lowdelay=no],
+               [#include <netinet/ip.h>])
 
 # Checks for library functions.
 AC_FUNC_FORK

+ 1 - 0
src/Makefile.am

@@ -1,6 +1,7 @@
 lib_LTLIBRARIES = libmodbus.la
 libmodbus_la_SOURCES = modbus.c modbus.h
 libmodbus_la_LDFLAGS = -version-info 2:0:0
+service_CFLAGS = -I$(top_srcdir)/
 
 # Include files to install
 libmodbusincludedir = $(includedir)/modbus

+ 3 - 0
src/modbus.c

@@ -28,6 +28,7 @@
    http://copyleft.free.fr/wordpress/index.php/libmodbus/
 */
 
+#include <config.h>
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
@@ -1685,6 +1686,7 @@ static int modbus_connect_tcp(modbus_param_t *mb_param)
                 return ret;
         }
 
+#ifdef HAVE_DECL_IPTOS_LOWDELAY
         /* Set the IP low delay option */
         option = IPTOS_LOWDELAY;
         ret = setsockopt(mb_param->fd, IPPROTO_TCP, IP_TOS,
@@ -1694,6 +1696,7 @@ static int modbus_connect_tcp(modbus_param_t *mb_param)
                 close(mb_param->fd);
                 return ret;
         }
+#endif
 
         if (mb_param->debug) {
                 printf("Connecting to %s\n", mb_param->ip);