test: verify that IP and IPv6 sockets can coexist in the same epoll set
This commit is contained in:
parent
47497ee19d
commit
7fc24cef64
56
test/test-mixed-socket-types.c
Normal file
56
test/test-mixed-socket-types.c
Normal file
@ -0,0 +1,56 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "error.h"
|
||||
#include "test-util.h"
|
||||
#include "wepoll.h"
|
||||
#include "win.h"
|
||||
|
||||
static void create_and_add_socket(HANDLE epoll_hnd,
|
||||
int af,
|
||||
int type,
|
||||
int protocol) {
|
||||
SOCKET sock;
|
||||
u_long one = 1;
|
||||
int r;
|
||||
struct epoll_event ev;
|
||||
|
||||
sock = socket(af, type, protocol);
|
||||
check(sock != INVALID_SOCKET);
|
||||
|
||||
r = ioctlsocket(sock, FIONBIO, &one);
|
||||
check(r == 0);
|
||||
|
||||
ev.events = EPOLLOUT | EPOLLONESHOT;
|
||||
ev.data.sock = sock;
|
||||
r = epoll_ctl(epoll_hnd, EPOLL_CTL_ADD, sock, &ev);
|
||||
check(r == 0);
|
||||
}
|
||||
|
||||
int main(void) {
|
||||
HANDLE epoll_hnd;
|
||||
int i, r;
|
||||
struct epoll_event ev;
|
||||
|
||||
epoll_hnd = epoll_create1(0);
|
||||
check(epoll_hnd != NULL);
|
||||
|
||||
create_and_add_socket(epoll_hnd, AF_INET, SOCK_DGRAM, IPPROTO_UDP);
|
||||
create_and_add_socket(epoll_hnd, AF_INET6, SOCK_DGRAM, IPPROTO_UDP);
|
||||
|
||||
for (i = 0; i < 2; i++) {
|
||||
r = epoll_wait(epoll_hnd, &ev, 1, -1);
|
||||
check(r == 1);
|
||||
|
||||
r = epoll_ctl(epoll_hnd, EPOLL_CTL_DEL, ev.data.sock, NULL);
|
||||
check(r == 0);
|
||||
|
||||
r = closesocket(ev.data.sock);
|
||||
check(r == 0);
|
||||
}
|
||||
|
||||
r = epoll_close(epoll_hnd);
|
||||
check(r == 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user