summaryrefslogtreecommitdiff
path: root/lib/tsocket/tsocket_bsd.c
AgeCommit message (Collapse)AuthorFilesLines
2013-03-13tsocket: ENOMEM can be retried on illumos/Solaris.Ira Cooper1-0/+6
The writev system call can return -1 and errno ENOMEM, as a retriable condition. Reviewed-by: Jeremy Allison <jra@samba.org> Autobuild-User(master): Jeremy Allison <jra@samba.org> Autobuild-Date(master): Wed Mar 13 23:50:05 CET 2013 on sn-devel-104
2013-03-04tsocket_bsd: Attempt to increase the SO_SNDBUF if we get EMSGSIZE in sendto()Andrew Bartlett1-0/+26
This matches what was done for lib/socket/socket_unix.c in c692bb02b039ae8fef6ba968fd13b36ad7d62a72. (and is based on that patch by Landon Fuller <landonf@bikemonkey.org>) Andrew Bartlett Reviewed-by: Stefan Metzmacher <metze@samba.org> Autobuild-User(master): Stefan Metzmacher <metze@samba.org> Autobuild-Date(master): Mon Mar 4 11:15:35 CET 2013 on sn-devel-104
2012-11-05lib/tsocket: disable the syscall optimization for recvfrom/readv by defaultStefan Metzmacher1-6/+67
We only do the optimization on recvfrom/readv if the caller asked for it. This is needed because in most cases we preferr to flush send buffers before receiving incoming requests. Signed-off-by: Stefan Metzmacher <metze@samba.org>
2012-10-23lib/tsocket: fix loop in tdgram_bsd_recvfrom() (bug #9184)Stefan Metzmacher1-1/+9
If the socket is not readable yet, we need to retry if tsocket_bsd_pending() returns 0. See also https://lists.samba.org/archive/samba-technical/2012-October/087164.html metze Autobuild-User(master): Andrew Bartlett <abartlet@samba.org> Autobuild-Date(master): Tue Oct 23 14:44:21 CEST 2012 on sn-devel-104
2012-09-22lib/tsocket: fix receiving of udp packets from 0 bytes (bug #9184)Stefan Metzmacher1-4/+1
It's possible for a client to send 0 bytes in a UDP packet, we need still need to call recvfrom() and skip the invalid packet at a higher level. Otherwise the kernel receive queue is blocked. metze
2010-11-05tsocket: fill in sa.sa_len if the system supports itStefan Metzmacher1-0/+12
metze
2010-10-23tsocket: let tstream_inet_tcp_connect_recv() optionally return the used ↵Stefan Metzmacher1-1/+2
local address tstream_inet_tcp_connect_send() usually only gets no local port number and it may use the wildcard address '0.0.0.0' or '::'. tstream_inet_tcp_connect_recv() provides the used local address and port which are used on the wire. metze
2010-10-23tsocket: ask the kernel for the specific local address after a tcp connectStefan Metzmacher1-3/+54
metze
2010-10-04tsocket: make sure we delete the fd event before calling close()Stefan Metzmacher1-0/+1
We got random double free errors, when getting events from epoll_wait() and try to dereference the private talloc pointer attached to it. Before doing the close() in the tstream_disconnect_send() function we need to delete the fd event. commit 38f505530ba06323a56c7d3914630efffcd12629 only fixed it for tdgram sockets. metze
2010-09-28tsocket: make sure we delete the fd event before calling close()Stefan Metzmacher1-0/+1
We got random double free errors, when getting events from epoll_wait() and try to dereference the private talloc pointer attached to it. Before doing the close() in the tstream_disconnect_send() function we need to delete the fd event. metze Autobuild-User: Stefan Metzmacher <metze@samba.org> Autobuild-Date: Tue Sep 28 01:02:55 UTC 2010 on sn-devel-104
2010-09-15tsocket: we return -1 on error, not fdAndrew Tridgell1-7/+7
the code used this pattent: if (fd < 0) { ...various cleanups... return fd; } it is much clearer to do this: if (fd < 0) { ...various cleanups... return -1; } as otherwise when reading the code you think this function may return a fd. Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>
2010-08-28Revert "lib/tsocket: sa_socklen is a macro on irix, so better use sasocklen"Stefan Metzmacher1-29/+29
This reverts commit 3d4fb698660381e650d7caeb5b7cff12847c0fb8. This was wrong... The problem was in the caller, sa_len is a macro on irix metze
2010-08-27lib/tsocket: sa_socklen is a macro on irix, so better use sasocklenStefan Metzmacher1-29/+29
metze
2010-06-21tsocket: Fix some type-punned warningsVolker Lendecke1-2/+2
2010-04-27lib/tsocket: add tsocket_address_is_unix() functionStefan Metzmacher1-0/+17
metze
2010-04-27lib/tsocket: add tsocket_address_is_inet() functionStefan Metzmacher1-0/+37
metze
2010-04-24Revert "tsocket: not all systems have IPV6_V6ONLY"Stefan Metzmacher1-2/+2
This reverts commit 63fc3978089df403d7e63462593784ff3d05e6e7. We now don't support IPv6 when IPV6_V6ONLY isn't available, as we rely on the behavior. metze
2010-04-08tsocket_bsd: Always use a real length for the sa_socklen, and keep it aroundAndrew Bartlett1-68/+16
The previous code assumed the OS would happily accept sizeof(struct sockaddr_storage). It seems some versions of Solaris do not like this. Andrew Bartlett
2010-03-26tsocket: not all systems have IPV6_V6ONLYAndrew Tridgell1-2/+2
2010-02-18tsocket/bsd: fix comment in tdgram_bsd_recvfrom_handler()Stefan Metzmacher1-2/+4
metze
2010-02-17Fix commit d07cd37b993d3c9beded20323174633b806196b5Jeremy Allison1-1/+4
Which was: tsocket/bsd: fix bug #7115 FreeBSD includes the UDP header in FIONREAD Metze, this has to have been wrong - you are throwing away the talloc_realloc pointer returned. Also no error checking. Please review. Thank goodness for gcc warnings :-). Jeremy.
2010-02-17tsocket/bsd: fix bug #7115 FreeBSD includes the UDP header in FIONREADStefan Metzmacher1-4/+6
metze
2010-02-17tsocket/bsd: set IPV6_V6ONLY on AF_INET6 socketsStefan Metzmacher1-0/+36
Some system already have this as default. It's easier to behave the same way on all systems and handle ipv6 and ipv4 sockets separate. metze
2010-02-17tsocket/bsd: fix bug #7140 autodetect ipv4 and ipv6 based on the remote ↵Stefan Metzmacher1-2/+53
address if the local address is any metze
2010-02-17tsocket/bsd: fix bug #7140 use calculated sa_socklen for bind() in ↵Stefan Metzmacher1-1/+1
tstream_bsd_connect_send() This is needed because, we can't use sizeof(sockaddr_storage) for AF_UNIX sockets. Also some platforms require exact values for AF_INET and AF_INET6. metze
2010-02-17tsocket/bsd: fix do_bind logic for AF_INETStefan Metzmacher1-2/+2
We want the explicit bind() when we don't use the any address. metze
2009-12-24tsocket: only copy the specific part of sockaddr*Stefan Metzmacher1-0/+5
This makes sure we fill the unspefic bytes with 0 and have zero termination for sockaddr_un. metze
2009-12-24tsocket: allow AF_UNIX sockaddrs smaller than sizeof(sockaddr_un)Stefan Metzmacher1-4/+5
This is needed as getpeername() truncates the length to 2 if the peer socket has no name. metze
2009-12-15tsocket: Fixed typo in LGPL header.Andreas Schneider1-1/+1
2009-12-15tsocket: add tsocket_address_bsd_sockaddr() and ↵Stefan Metzmacher1-5/+49
tsocket_address_bsd_from_sockaddr() metze
2009-11-03tsocket_bsd: return -1 and set errno to ENAMETOOLONG if the unix path is too ↵Stefan Metzmacher1-1/+6
long metze
2009-07-16tsocket: rename sa_len => sa_socklen, because sa_len is a macro on some ↵Stefan Metzmacher1-21/+21
platforms metze
2009-06-29tsocket/bsd: also ask for TEVENT_FD_READ when we want to write into a stream ↵Stefan Metzmacher1-2/+9
socket Otherwise we would not notice a broken connection. metze
2009-06-29tsocket/bsd: more correctly check if the cached tevent_fd is still validStefan Metzmacher1-4/+12
I some cases the pointer value of tevent_context is the same again, if we do something like: ev1 = tevent_context_init(); ... fde = tevent_add_fd(ev1, fd, TEVENT_FD_READ...); ... talloc_free(ev1); ... ev2 = tevent_context_init(); if (ev1 == ev2) { /* this can happen! */ } if (tevent_fd_get_flags(fde) == 0) { /* this is always true */ } But the "talloc_free(ev1)" will set fde->event_ctx to NULL and tevent_fd_get_flags() will always return 0. metze
2009-05-22tsocket: allow empty vectors at the end for tstream_writev()/readv()Stefan Metzmacher1-0/+26
metze
2009-05-19Set errno=ENOMEM if tevent_add_fd failsVolker Lendecke1-0/+4
tevent_add_fd does not properly set that. At least in epoll and select this is the only error condition. Metze, please check!
2009-05-19Simplify the logic of tsocket_bsd_pendingVolker Lendecke1-24/+26
Remove two indentation levels by returning early on error. Metze, please check!
2009-05-01tsocket: add tstream implementation for bsd sockets (inet and unix)Stefan Metzmacher1-0/+900
metze
2009-05-01tsocket: rename tdgram_unix_dgram_socket() => tdgram_unix_socket()Stefan Metzmacher1-5/+5
metze
2009-05-01tsocket: tdgram move input checks to the common code as there're needed for ↵Stefan Metzmacher1-22/+1
all backends We need to make sure that we free the sendto and recvfrom requests before the tdgram_context metze
2009-05-01tsocket: for unix domain sockets we need to use sizeof(struct sockaddr_un)Stefan Metzmacher1-2/+22
sizeof(struct sockaddr_storage) generates EINVAL. metze
2009-05-01tsocket: remove tsocket_context related stuffStefan Metzmacher1-674/+13
It will be replaced by tdgram_context and tstream_context. metze
2009-04-16tsocket: fix the build without ipv6 supportStefan Metzmacher1-0/+2
metze
2009-04-06tsocket: reduce size of dummy variableStefan Metzmacher1-1/+1
metze
2009-04-06tsocket: use the correct 'ret' variable for tdgram_disconnect_send/recv()Stefan Metzmacher1-8/+2
metze
2009-04-02tsocket: remove DGRAM support from tsocket_contextStefan Metzmacher1-72/+0
metze
2009-04-02tsocket: optimize tdgram_bsd a lotStefan Metzmacher1-27/+54
The desire is to do as less syscalls during the tdgram_sendto_send/recv() and tdgram_recvfrom_send/recv() operations. 1. we first try the sendto()/recvfrom() syscall and only use a fd event if we got EAGAIN. 2. we cache the fd event and only change it's flags if really needed. For the highload case we do almost no epoll_ctl() and epoll_wait()/select() syscalls anymore. This speeds up the LDAP-BENCH-CLDAP test by more than 20%. (With a modified version of this test which let the server skip any ldb calls and just return success I'm getting about 8000 requests per second, while I'm getting just about 6000 requests per second without optimization) metze
2009-04-02tsocket: split out a smaller tdgram_context abstractionStefan Metzmacher1-0/+844
The idea is to have a tdgram and a tstream abstraction which only provide tevent_req based io functions. metze
2009-03-31tsocket: try to fix the build on solaris FIONREAD was missingStefan Metzmacher1-0/+1
metze
2009-03-28tsocket: more s/sun/un to make the build on solaris happyStefan Metzmacher1-6/+6
metze