+++ /dev/null
-Bottom: 19f8849f48737cbf50102511ff14a78d39040f12
-Top: e61a43e1e4e084e2b3c0a5b0070b81f378686b89
-Author: Sean Hefty <sean.hefty@intel.com>
-Date: 2012-07-16 15:58:30 -0700
-
-Refresh of transpose
-
----
-
-diff --git a/src/preload.c b/src/preload.c
-index 14b09b8..3417223 100644
---- a/src/preload.c
-+++ b/src/preload.c
-@@ -285,58 +285,52 @@ transpose_socket(int index, int *fd, enum fd_type new_type)
- {
- socklen_t len = 0;
- int new_fd, param, ret;
-+ struct socket_calls *new, *old;
-
-- ret = new_type == fd_rsocket ?
-- real.getsockname(*fd, NULL, &len) : rgetsockname(*fd, NULL, &len);
-+ if (new_type == fd_rsocket) {
-+ new = &rs;
-+ old = ℜ
-+ } else {
-+ new = ℜ
-+ old = &rs;
-+ }
-+
-+ ret = old->getsockname(*fd, NULL, &len);
- if (ret)
- return ret;
-
- param = (len == sizeof(struct sockaddr_in6)) ? PF_INET6 : PF_INET;
-- new_fd = new_type == fd_rsocket ?
-- rsocket(param, SOCK_STREAM, 0) : socket(param, SOCK_STREAM, 0);
-+ new_fd = new->socket(param, SOCK_STREAM, 0);
- if (new_fd < 0)
- return new_fd;
-
-- ret = new_type == fd_rsocket ?
-- real.fcntl(*fd, F_GETFL) : rcntl(*fd, F_GETFL);
-- if (ret > 0) {
-- ret = new_type == fd_rsocket ?
-- rfcntl(new_fd, F_SETFL, ret) : real.fcntl(new_fd, F_SETFL, ret);
-- }
-+ ret = old->fcntl(*fd, F_GETFL);
-+ if (ret > 0)
-+ ret = new->fcntl(new_fd, F_SETFL, ret);
- if (ret)
- goto err;
-
- len = sizeof param;
-- ret = new_type == fd_rsocket ?
-- real.getsockopt(*fd, SOL_SOCKET, SO_REUSEADDR, ¶m, &len) :
-- rgetsockopt(*fd, SOL_SOCKET, SO_REUSEADDR, ¶m, &len);
-- if (param && !ret) {
-- ret = new_type == fd_rsocket ?
-- rsetsockopt(new_fd, SOL_SOCKET, SO_REUSEADDR, ¶m, len) :
-- real.setsockopt(new_fd, SOL_SOCKET, SO_REUSEADDR, ¶m, len);
-- }
-+ ret = old->getsockopt(*fd, SOL_SOCKET, SO_REUSEADDR, ¶m, &len);
-+ if (param && !ret)
-+ ret = new->setsockopt(new_fd, SOL_SOCKET, SO_REUSEADDR, ¶m, len);
- if (ret)
- goto err;
-
- len = sizeof param;
-- ret = new_type == fd_rsocket ?
-- real.getsockopt(*fd, IPPROTO_TCP, TCP_NODELAY, ¶m, &len) :
-- rgetsockopt(*fd, IPPROTO_TCP, TCP_NODELAY, ¶m, &len);
-- if (param && !ret) {
-- ret = new_type == fd_rsocket ?
-- rsetsockopt(new_fd, IPPROTO_TCP, TCP_NODELAY, ¶m, len) :
-- real.setsockopt(new_fd, IPPROTO_TCP, TCP_NODELAY, ¶m, len);
-- }
-+ ret = old->getsockopt(*fd, IPPROTO_TCP, TCP_NODELAY, ¶m, &len);
-+ if (param && !ret)
-+ ret = new->setsockopt(new_fd, IPPROTO_TCP, TCP_NODELAY, ¶m, len);
- if (ret)
- goto err;
-
-- new_type == fd_rsocket ? rclose(*fd) : real.close(*fd);
-+ old->close(*fd);
- fd_store(socket, new_fd, new_type);
- *fd = new_fd;
- return 0;
-
- err:
-- new_type == fd_rsocket ? real.close(new_fd) : rclose(new_fd);
-+ new->close(new_fd);
- return ret;
- }
Bottom: 7ec243f3149e9a1ff1d5183f18e30d2458e354d6
-Top: 19f8849f48737cbf50102511ff14a78d39040f12
+Top: e61a43e1e4e084e2b3c0a5b0070b81f378686b89
Author: Sean Hefty <sean.hefty@intel.com>
Date: 2012-07-16 14:17:58 -0700
---
diff --git a/src/preload.c b/src/preload.c
-index 2750b30..14b09b8 100644
+index 2750b30..3417223 100644
--- a/src/preload.c
+++ b/src/preload.c
@@ -53,38 +53,38 @@
getenv_options();
init = 1;
-@@ -252,51 +276,67 @@ out:
+@@ -252,51 +276,61 @@ out:
}
/*
{
socklen_t len = 0;
int new_fd, param, ret;
++ struct socket_calls *new, *old;
++
++ if (new_type == fd_rsocket) {
++ new = &rs;
++ old = ℜ
++ } else {
++ new = ℜ
++ old = &rs;
++ }
- ret = rgetsockname(*fd, NULL, &len);
-+ ret = new_type == fd_rsocket ?
-+ real.getsockname(*fd, NULL, &len) : rgetsockname(*fd, NULL, &len);
++ ret = old->getsockname(*fd, NULL, &len);
if (ret)
return ret;
param = (len == sizeof(struct sockaddr_in6)) ? PF_INET6 : PF_INET;
- new_fd = real_socket(param, SOCK_STREAM, IPPROTO_TCP);
-+ new_fd = new_type == fd_rsocket ?
-+ rsocket(param, SOCK_STREAM, 0) : socket(param, SOCK_STREAM, 0);
++ new_fd = new->socket(param, SOCK_STREAM, 0);
if (new_fd < 0)
return new_fd;
- ret = rfcntl(*fd, F_GETFL);
-- if (ret > 0)
++ ret = old->fcntl(*fd, F_GETFL);
+ if (ret > 0)
- ret = real_fcntl(new_fd, F_SETFL, ret);
-+ ret = new_type == fd_rsocket ?
-+ real.fcntl(*fd, F_GETFL) : rcntl(*fd, F_GETFL);
-+ if (ret > 0) {
-+ ret = new_type == fd_rsocket ?
-+ rfcntl(new_fd, F_SETFL, ret) : real.fcntl(new_fd, F_SETFL, ret);
-+ }
++ ret = new->fcntl(new_fd, F_SETFL, ret);
if (ret)
goto err;
len = sizeof param;
- ret = rgetsockopt(*fd, SOL_SOCKET, SO_REUSEADDR, ¶m, &len);
-- if (param && !ret)
++ ret = old->getsockopt(*fd, SOL_SOCKET, SO_REUSEADDR, ¶m, &len);
+ if (param && !ret)
- ret = real_setsockopt(new_fd, SOL_SOCKET, SO_REUSEADDR, ¶m, len);
-+ ret = new_type == fd_rsocket ?
-+ real.getsockopt(*fd, SOL_SOCKET, SO_REUSEADDR, ¶m, &len) :
-+ rgetsockopt(*fd, SOL_SOCKET, SO_REUSEADDR, ¶m, &len);
-+ if (param && !ret) {
-+ ret = new_type == fd_rsocket ?
-+ rsetsockopt(new_fd, SOL_SOCKET, SO_REUSEADDR, ¶m, len) :
-+ real.setsockopt(new_fd, SOL_SOCKET, SO_REUSEADDR, ¶m, len);
-+ }
++ ret = new->setsockopt(new_fd, SOL_SOCKET, SO_REUSEADDR, ¶m, len);
if (ret)
goto err;
len = sizeof param;
- ret = rgetsockopt(*fd, IPPROTO_TCP, TCP_NODELAY, ¶m, &len);
-- if (param && !ret)
++ ret = old->getsockopt(*fd, IPPROTO_TCP, TCP_NODELAY, ¶m, &len);
+ if (param && !ret)
- ret = real_setsockopt(new_fd, IPPROTO_TCP, TCP_NODELAY, ¶m, len);
-+ ret = new_type == fd_rsocket ?
-+ real.getsockopt(*fd, IPPROTO_TCP, TCP_NODELAY, ¶m, &len) :
-+ rgetsockopt(*fd, IPPROTO_TCP, TCP_NODELAY, ¶m, &len);
-+ if (param && !ret) {
-+ ret = new_type == fd_rsocket ?
-+ rsetsockopt(new_fd, IPPROTO_TCP, TCP_NODELAY, ¶m, len) :
-+ real.setsockopt(new_fd, IPPROTO_TCP, TCP_NODELAY, ¶m, len);
-+ }
++ ret = new->setsockopt(new_fd, IPPROTO_TCP, TCP_NODELAY, ¶m, len);
if (ret)
goto err;
- rclose(*fd);
- fd_store(socket, new_fd, fd_normal);
-+ new_type == fd_rsocket ? rclose(*fd) : real.close(*fd);
++ old->close(*fd);
+ fd_store(socket, new_fd, new_type);
*fd = new_fd;
return 0;
err:
- real_close(new_fd);
-+ new_type == fd_rsocket ? real.close(new_fd) : rclose(new_fd);
++ new->close(new_fd);
return ret;
}
-@@ -338,7 +378,7 @@ int socket(int domain, int type, int protocol)
+@@ -338,7 +372,7 @@ int socket(int domain, int type, int protocol)
}
fd_close(index, &ret);
real:
}
int bind(int socket, const struct sockaddr *addr, socklen_t addrlen)
-@@ -351,19 +391,19 @@ int bind(int socket, const struct sockaddr *addr, socklen_t addrlen)
+@@ -351,19 +385,19 @@ int bind(int socket, const struct sockaddr *addr, socklen_t addrlen)
if (!sin->sin_port || ntohs(sin->sin_port) > 1024)
return rbind(fd, addr, addrlen);
}
int accept(int socket, struct sockaddr *addr, socklen_t *addrlen)
-@@ -384,7 +424,7 @@ int accept(int socket, struct sockaddr *addr, socklen_t *addrlen)
+@@ -384,7 +418,7 @@ int accept(int socket, struct sockaddr *addr, socklen_t *addrlen)
fd_store(index, ret, fd_rsocket);
return index;
} else {
}
}
-@@ -401,19 +441,19 @@ int connect(int socket, const struct sockaddr *addr, socklen_t addrlen)
+@@ -401,19 +435,19 @@ int connect(int socket, const struct sockaddr *addr, socklen_t addrlen)
return ret;
}
}
ssize_t recvfrom(int socket, void *buf, size_t len, int flags,
-@@ -422,14 +462,14 @@ ssize_t recvfrom(int socket, void *buf, size_t len, int flags,
+@@ -422,14 +456,14 @@ ssize_t recvfrom(int socket, void *buf, size_t len, int flags,
int fd;
return (fd_get(socket, &fd) == fd_rsocket) ?
rrecvfrom(fd, buf, len, flags, src_addr, addrlen) :
}
ssize_t read(int socket, void *buf, size_t count)
-@@ -437,7 +477,7 @@ ssize_t read(int socket, void *buf, size_t count)
+@@ -437,7 +471,7 @@ ssize_t read(int socket, void *buf, size_t count)
int fd;
init_preload();
return (fd_get(socket, &fd) == fd_rsocket) ?
}
ssize_t readv(int socket, const struct iovec *iov, int iovcnt)
-@@ -445,14 +485,14 @@ ssize_t readv(int socket, const struct iovec *iov, int iovcnt)
+@@ -445,14 +479,14 @@ ssize_t readv(int socket, const struct iovec *iov, int iovcnt)
int fd;
init_preload();
return (fd_get(socket, &fd) == fd_rsocket) ?
}
ssize_t sendto(int socket, const void *buf, size_t len, int flags,
-@@ -461,14 +501,14 @@ ssize_t sendto(int socket, const void *buf, size_t len, int flags,
+@@ -461,14 +495,14 @@ ssize_t sendto(int socket, const void *buf, size_t len, int flags,
int fd;
return (fd_get(socket, &fd) == fd_rsocket) ?
rsendto(fd, buf, len, flags, dest_addr, addrlen) :
}
ssize_t write(int socket, const void *buf, size_t count)
-@@ -476,7 +516,7 @@ ssize_t write(int socket, const void *buf, size_t count)
+@@ -476,7 +510,7 @@ ssize_t write(int socket, const void *buf, size_t count)
int fd;
init_preload();
return (fd_get(socket, &fd) == fd_rsocket) ?
}
ssize_t writev(int socket, const struct iovec *iov, int iovcnt)
-@@ -484,7 +524,7 @@ ssize_t writev(int socket, const struct iovec *iov, int iovcnt)
+@@ -484,7 +518,7 @@ ssize_t writev(int socket, const struct iovec *iov, int iovcnt)
int fd;
init_preload();
return (fd_get(socket, &fd) == fd_rsocket) ?
}
static struct pollfd *fds_alloc(nfds_t nfds)
-@@ -514,7 +554,7 @@ int poll(struct pollfd *fds, nfds_t nfds, int timeout)
+@@ -514,7 +548,7 @@ int poll(struct pollfd *fds, nfds_t nfds, int timeout)
goto use_rpoll;
}
use_rpoll:
rfds = fds_alloc(nfds);
-@@ -619,14 +659,14 @@ int shutdown(int socket, int how)
+@@ -619,14 +653,14 @@ int shutdown(int socket, int how)
{
int fd;
return (fd_get(socket, &fd) == fd_rsocket) ?
}
int getpeername(int socket, struct sockaddr *addr, socklen_t *addrlen)
-@@ -634,7 +674,7 @@ int getpeername(int socket, struct sockaddr *addr, socklen_t *addrlen)
+@@ -634,7 +668,7 @@ int getpeername(int socket, struct sockaddr *addr, socklen_t *addrlen)
int fd;
return (fd_get(socket, &fd) == fd_rsocket) ?
rgetpeername(fd, addr, addrlen) :
}
int getsockname(int socket, struct sockaddr *addr, socklen_t *addrlen)
-@@ -642,7 +682,7 @@ int getsockname(int socket, struct sockaddr *addr, socklen_t *addrlen)
+@@ -642,7 +676,7 @@ int getsockname(int socket, struct sockaddr *addr, socklen_t *addrlen)
int fd;
return (fd_get(socket, &fd) == fd_rsocket) ?
rgetsockname(fd, addr, addrlen) :
}
int setsockopt(int socket, int level, int optname,
-@@ -651,7 +691,7 @@ int setsockopt(int socket, int level, int optname,
+@@ -651,7 +685,7 @@ int setsockopt(int socket, int level, int optname,
int fd;
return (fd_get(socket, &fd) == fd_rsocket) ?
rsetsockopt(fd, level, optname, optval, optlen) :
}
int getsockopt(int socket, int level, int optname,
-@@ -660,7 +700,7 @@ int getsockopt(int socket, int level, int optname,
+@@ -660,7 +694,7 @@ int getsockopt(int socket, int level, int optname,
int fd;
return (fd_get(socket, &fd) == fd_rsocket) ?
rgetsockopt(fd, level, optname, optval, optlen) :
}
int fcntl(int socket, int cmd, ... /* arg */)
-@@ -679,7 +719,7 @@ int fcntl(int socket, int cmd, ... /* arg */)
+@@ -679,7 +713,7 @@ int fcntl(int socket, int cmd, ... /* arg */)
case F_GETSIG:
case F_GETLEASE:
ret = (fd_get(socket, &fd) == fd_rsocket) ?
break;
case F_DUPFD:
/*case F_DUPFD_CLOEXEC:*/
-@@ -691,12 +731,12 @@ int fcntl(int socket, int cmd, ... /* arg */)
+@@ -691,12 +725,12 @@ int fcntl(int socket, int cmd, ... /* arg */)
case F_NOTIFY:
lparam = va_arg(args, long);
ret = (fd_get(socket, &fd) == fd_rsocket) ?