summaryrefslogtreecommitdiff
path: root/source3/lib/socket_wrapper
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2006-10-08 21:50:22 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:15:19 -0500
commitebc2f440e79677a3d25e99f9a9f154e05ec67226 (patch)
treedf7d65239d90966c78c9dc18c97ad6f5b4c7031d /source3/lib/socket_wrapper
parente4e3dc064d7348e7267a4f42a78c0c059f1e6ec1 (diff)
downloadsamba-ebc2f440e79677a3d25e99f9a9f154e05ec67226.tar.gz
samba-ebc2f440e79677a3d25e99f9a9f154e05ec67226.tar.bz2
samba-ebc2f440e79677a3d25e99f9a9f154e05ec67226.zip
r19177: merge from samba4:
fix the standalone build of socket_wrapper by not using samba's DLIST_ macros metze (This used to be commit bc7b2e8db8fb34d6f321cd6b13b74e58945d7124)
Diffstat (limited to 'source3/lib/socket_wrapper')
-rw-r--r--source3/lib/socket_wrapper/socket_wrapper.c43
1 files changed, 34 insertions, 9 deletions
diff --git a/source3/lib/socket_wrapper/socket_wrapper.c b/source3/lib/socket_wrapper/socket_wrapper.c
index 68ee400a7b..20205b8f9e 100644
--- a/source3/lib/socket_wrapper/socket_wrapper.c
+++ b/source3/lib/socket_wrapper/socket_wrapper.c
@@ -46,10 +46,6 @@
#include "system/network.h"
#include "system/filesys.h"
-#ifndef _DLINKLIST_H
-#include "lib/util/dlinklist.h"
-#endif
-
#ifdef malloc
#undef malloc
#endif
@@ -74,10 +70,39 @@
#include <string.h>
#include <stdio.h>
-#error "dlinklist.h missing"
-
#endif
+#define SWRAP_DLIST_ADD(list,item) do { \
+ if (!(list)) { \
+ (item)->prev = NULL; \
+ (item)->next = NULL; \
+ (list) = (item); \
+ } else { \
+ (item)->prev = NULL; \
+ (item)->next = (list); \
+ (list)->prev = (item); \
+ (list) = (item); \
+ } \
+} while (0)
+
+#define SWRAP_DLIST_REMOVE(list,item) do { \
+ if ((list) == (item)) { \
+ (list) = (item)->next; \
+ if (list) { \
+ (list)->prev = NULL; \
+ } \
+ } else { \
+ if ((item)->prev) { \
+ (item)->prev->next = (item)->next; \
+ } \
+ if ((item)->next) { \
+ (item)->next->prev = (item)->prev; \
+ } \
+ } \
+ (item)->prev = NULL; \
+ (item)->next = NULL; \
+} while (0)
+
/* LD_PRELOAD doesn't work yet, so REWRITE_CALLS is all we support
* for now */
#define REWRITE_CALLS
@@ -1072,7 +1097,7 @@ _PUBLIC_ int swrap_socket(int family, int type, int protocol)
si->protocol = protocol;
si->fd = fd;
- DLIST_ADD(sockets, si);
+ SWRAP_DLIST_ADD(sockets, si);
return si->fd;
}
@@ -1141,7 +1166,7 @@ _PUBLIC_ int swrap_accept(int s, struct sockaddr *addr, socklen_t *addrlen)
child_si->peername_len = *addrlen;
child_si->peername = sockaddr_dup(addr, *addrlen);
- DLIST_ADD(sockets, child_si);
+ SWRAP_DLIST_ADD(sockets, child_si);
swrap_dump_packet(child_si, addr, SWRAP_ACCEPT_SEND, NULL, 0);
swrap_dump_packet(child_si, addr, SWRAP_ACCEPT_RECV, NULL, 0);
@@ -1541,7 +1566,7 @@ _PUBLIC_ int swrap_close(int fd)
return real_close(fd);
}
- DLIST_REMOVE(sockets, si);
+ SWRAP_DLIST_REMOVE(sockets, si);
if (si->myname && si->peername) {
swrap_dump_packet(si, NULL, SWRAP_CLOSE_SEND, NULL, 0);