MT#55283 support accept4() in tester

Change-Id: I842b65571dc571c7c1a482dea62bb69d47700efd
(cherry picked from commit 928dd269b0)
(cherry picked from commit f9c12aa1b5)
mr12.5.1
Richard Fuchs 2 months ago
parent 4c7878250a
commit a25dbfcfa6

@ -502,9 +502,9 @@ do_connect:;
return ret;
}
int accept(int fd, struct sockaddr *addr, socklen_t *addrlen) {
int accept4(int fd, struct sockaddr *addr, socklen_t *addrlen, int flags) {
const char *err;
int (*real_accept)(int, struct sockaddr *, socklen_t *) = dlsym(RTLD_NEXT, "accept");
int (*real_accept4)(int, struct sockaddr *, socklen_t *, int) = dlsym(RTLD_NEXT, "accept4");
err = "fd out of bounds";
if (fd < 0 || fd >= MAX_SOCKETS)
@ -523,7 +523,7 @@ do_accept_warn:
do_accept:;
struct sockaddr_un sun;
socklen_t sun_len = sizeof(sun);
int new_fd = real_accept(fd, (struct sockaddr *) &sun, &sun_len);
int new_fd = real_accept4(fd, (struct sockaddr *) &sun, &sun_len, flags);
if (new_fd == -1)
return -1;
if (new_fd < 0 || new_fd >= MAX_SOCKETS || real_sockets[new_fd].open) {
@ -554,6 +554,10 @@ do_accept:;
return new_fd;
}
int accept(int fd, struct sockaddr *addr, socklen_t *addrlen) {
return accept4(fd, addr, addrlen, 0);
}
int dup(int fd) {
int (*real_dup)(int) = dlsym(RTLD_NEXT, "dup");
int ret = real_dup(fd);

Loading…
Cancel
Save