]> granicus.if.org Git - libevent/commitdiff
test/regress_ssl: covert that we can't change fd with underlying
authorAzat Khuzhin <a3at.mail@gmail.com>
Wed, 2 Sep 2015 14:17:43 +0000 (17:17 +0300)
committerAzat Khuzhin <a3at.mail@gmail.com>
Wed, 2 Sep 2015 16:07:08 +0000 (19:07 +0300)
test/regress_ssl.c

index e8cff947ac805f5456276259b43147537a049305..6896e8ece4c654a8be4de854a3d0f9efcf673c8e 100644 (file)
@@ -199,10 +199,15 @@ enum regress_openssl_type
 };
 
 static void
-bufferevent_openssl_check_fd(struct bufferevent *bev)
+bufferevent_openssl_check_fd(struct bufferevent *bev, int filter)
 {
-       tt_int_op(bufferevent_getfd(bev), !=, -1);
-       tt_int_op(bufferevent_setfd(bev, -1), ==, 0);
+       if (filter) {
+               tt_int_op(bufferevent_getfd(bev), ==, -1);
+               tt_int_op(bufferevent_setfd(bev, -1), ==, -1);
+       } else {
+               tt_int_op(bufferevent_getfd(bev), !=, -1);
+               tt_int_op(bufferevent_setfd(bev, -1), ==, 0);
+       }
        tt_int_op(bufferevent_getfd(bev), ==, -1);
 
 end:
@@ -290,7 +295,7 @@ eventcb(struct bufferevent *bev, short what, void *ctx)
                TT_BLATHER(("Got a good EOF"));
                ++got_close;
                if (type & REGRESS_OPENSSL_FD) {
-                       bufferevent_openssl_check_fd(bev);
+                       bufferevent_openssl_check_fd(bev, type & REGRESS_OPENSSL_FILTER);
                }
                if (type & REGRESS_OPENSSL_FREED) {
                        bufferevent_openssl_check_freed(bev);
@@ -300,7 +305,7 @@ eventcb(struct bufferevent *bev, short what, void *ctx)
                TT_BLATHER(("Got an error."));
                ++got_error;
                if (type & REGRESS_OPENSSL_FD) {
-                       bufferevent_openssl_check_fd(bev);
+                       bufferevent_openssl_check_fd(bev, type & REGRESS_OPENSSL_FILTER);
                }
                if (type & REGRESS_OPENSSL_FREED) {
                        bufferevent_openssl_check_freed(bev);
@@ -569,6 +574,9 @@ struct testcase_t ssl_testcases[] = {
        { "bufferevent_socketpair_freed_fd", regress_bufferevent_openssl,
          TT_ISOLATED, &basic_setup,
          T(REGRESS_OPENSSL_SOCKETPAIR | REGRESS_OPENSSL_FREED | REGRESS_OPENSSL_FD) },
+       { "bufferevent_filter_freed_fd", regress_bufferevent_openssl,
+         TT_ISOLATED, &basic_setup,
+         T(REGRESS_OPENSSL_FILTER | REGRESS_OPENSSL_FREED | REGRESS_OPENSSL_FD) },
 #undef T
 
        { "bufferevent_connect", regress_bufferevent_openssl_connect,