]> granicus.if.org Git - libevent/commitdiff
Merge branch 'fix-struct-linger'
authorAzat Khuzhin <a3at.mail@gmail.com>
Sun, 29 Jan 2017 20:07:40 +0000 (23:07 +0300)
committerAzat Khuzhin <azat@libevent.org>
Sat, 2 Feb 2019 12:13:48 +0000 (15:13 +0300)
@jbech
  "Accidentally disabled by 0dda56a due to confusion between struct
  linger vs. SO_LINGER and #define vs. AC_DEFINE. Try adding synthetic
  #error test to confirm."

* fix-struct-linger:
  cmake: check for 'struct linger' existence
  test/bench*: prefix event-config.h macros after 0dda56a48e94
  test/bench_httpclient: restore SO_LINGER usage after 0dda56a48e94

Fixes: #444 (original pull-request)
(cherry picked from commit 9d5a4bdc5cfbf2385efc7c58103161b3512c4500)

CMakeLists.txt
configure.ac
event-config.h.cmake
test/bench.c
test/bench_cascade.c
test/bench_httpclient.c

index dd6bf6709879a9bcdac0b18df461f76875b4de86..1d6bafc58cf33247da4295b1ae55726d4072db3f 100644 (file)
@@ -578,6 +578,8 @@ if(EVENT__HAVE_STRUCT_SOCKADDR_STORAGE)
             __ss_family "${SOCKADDR_HEADERS}" EVENT__HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY)
 endif()
 
+CHECK_TYPE_SIZE("struct linger" EVENT__HAVE_STRUCT_LINGER)
+
 # Group the source files.
 set(HDR_PRIVATE
     bufferevent-internal.h
index 7528d37ee03f4056181ba36d9fdacb27fef75985..ebb591100cb82e2867913d672728e7e89d4aafd4 100644 (file)
@@ -715,8 +715,7 @@ AC_CHECK_MEMBERS([struct in6_addr.s6_addr32, struct in6_addr.s6_addr16, struct s
 #endif
 ])
 
-AC_CHECK_TYPES([struct so_linger],
-[#define HAVE_SO_LINGER], ,
+AC_CHECK_TYPES([struct linger],,,
 [
 #ifdef HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
index c1355be9148578b23d0d8db030594843f28d01fb..faa159b70397cf76e9d9bfe3f6615839c64ac81c 100644 (file)
 /* Define to 1 if `__ss_family' is a member of `struct sockaddr_storage'. */
 #cmakedefine EVENT__HAVE_STRUCT_SOCKADDR_STORAGE___SS_FAMILY
 
+/* Define to 1 if the system has the type `struct linger'. */
+#cmakedefine EVENT__HAVE_STRUCT_LINGER
+
 /* Define to 1 if you have the `sysctl' function. */
 #cmakedefine EVENT__HAVE_SYSCTL
 
index 214479c1ff3132c718c192d20f378966d76d93a9..c2c8983d09f4336505576d13c076b21a798986c2 100644 (file)
@@ -136,7 +136,7 @@ run_once(void)
 int
 main(int argc, char **argv)
 {
-#ifdef HAVE_SETRLIMIT 
+#ifdef EVENT__HAVE_SETRLIMIT
        struct rlimit rl;
 #endif
        int i, c;
@@ -167,7 +167,7 @@ main(int argc, char **argv)
                }
        }
 
-#ifdef HAVE_SETRLIMIT
+#ifdef EVENT__HAVE_SETRLIMIT
        rl.rlim_cur = rl.rlim_max = num_pipes * 2 + 50;
        if (setrlimit(RLIMIT_NOFILE, &rl) == -1) {
                perror("setrlimit");
index 2d85cc1f1038995ed250628be6f71a7023201259..1248835d7f7b4b2c40f60844e5eea6cf86242f9c 100644 (file)
@@ -139,7 +139,7 @@ run_once(int num_pipes)
 int
 main(int argc, char **argv)
 {
-#ifdef HAVE_SETRLIMIT
+#ifdef EVENT__HAVE_SETRLIMIT
        struct rlimit rl;
 #endif
        int i, c;
@@ -162,7 +162,7 @@ main(int argc, char **argv)
                }
        }
 
-#ifdef HAVE_SETRLIMIT 
+#ifdef EVENT__HAVE_SETRLIMIT
        rl.rlim_cur = rl.rlim_max = num_pipes * 2 + 50;
        if (setrlimit(RLIMIT_NOFILE, &rl) == -1) {
                perror("setrlimit");
index e15929519dcc1cc8df808f601b665f1d34f1168a..7c7ee470a307e154426ba3419d6c892ac3ca85d8 100644 (file)
@@ -113,13 +113,13 @@ errorcb(struct bufferevent *b, short what, void *arg)
 static void
 frob_socket(evutil_socket_t sock)
 {
-#ifdef HAVE_SO_LINGER
+#ifdef EVENT__HAVE_STRUCT_LINGER
        struct linger l;
 #endif
        int one = 1;
        if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (void*)&one, sizeof(one))<0)
                perror("setsockopt(SO_REUSEADDR)");
-#ifdef HAVE_SO_LINGER
+#ifdef EVENT__HAVE_STRUCT_LINGER
        l.l_onoff = 1;
        l.l_linger = 0;
        if (setsockopt(sock, SOL_SOCKET, SO_LINGER, (void*)&l, sizeof(l))<0)