From daacff91065742d09bc944e9e90da928bc3a08cd Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sun, 25 Dec 2016 18:13:11 +0100 Subject: [PATCH] qmuxd_wrapper: Reduce dlsym() load (don't call it again and again) --- qmi/ld_preload_wrapper/qmuxd_wrapper.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/qmi/ld_preload_wrapper/qmuxd_wrapper.c b/qmi/ld_preload_wrapper/qmuxd_wrapper.c index 7b2830d..02a5e75 100644 --- a/qmi/ld_preload_wrapper/qmuxd_wrapper.c +++ b/qmi/ld_preload_wrapper/qmuxd_wrapper.c @@ -70,7 +70,8 @@ ssize_t write(int fd, const void *buf, size_t count) { dump_qmuxd(fd, 1, buf, count); - real_write = dlsym(RTLD_NEXT, "write"); + if (!real_write) + real_write = dlsym(RTLD_NEXT, "write"); return real_write(fd, buf, count); } @@ -78,7 +79,8 @@ ssize_t read(int fd, void *buf, size_t count) { dump_qmuxd(fd, 0, buf, count); - real_read = dlsym(RTLD_NEXT, "read"); + if (!real_read) + real_read = dlsym(RTLD_NEXT, "read"); return real_read(fd, buf, count); } @@ -86,7 +88,8 @@ ssize_t send(int fd, const void *buf, size_t count, int flags) { dump_qmuxd(fd, 1, buf, count); - real_send = dlsym(RTLD_NEXT, "send"); + if (!real_send) + real_send = dlsym(RTLD_NEXT, "send"); return real_send(fd, buf, count, flags); } @@ -94,7 +97,8 @@ ssize_t recv(int fd, void *buf, size_t len, int flags) { dump_qmuxd(fd, 0, buf, len); - real_recv = dlsym(RTLD_NEXT, "recv"); + if (!real_recv) + real_recv = dlsym(RTLD_NEXT, "recv"); return real_recv(fd, buf, len, flags); } @@ -108,7 +112,8 @@ int connect(int fd, const struct sockaddr *addr, socklen_t addrlen) } } - real_connect = dlsym(RTLD_NEXT, "connect"); + if (!real_connect) + real_connect = dlsym(RTLD_NEXT, "connect"); return real_connect(fd, addr, addrlen); } @@ -122,6 +127,7 @@ int close(int fd) trace_fds[i] = -1; } } - real_close = dlsym(RTLD_NEXT, "close"); + if (!real_close) + real_close = dlsym(RTLD_NEXT, "close"); return real_close(fd); }