summaryrefslogtreecommitdiff
path: root/network_io
diff options
context:
space:
mode:
authorJoe Orton <jorton@apache.org>2006-10-25 10:54:41 +0000
committerJoe Orton <jorton@apache.org>2006-10-25 10:54:41 +0000
commita3f42085153d3a7533ee7fd8dc283644439f43d2 (patch)
tree9ba23aed14adc9382614e993a2ae0caaeefa1228 /network_io
parentaf33dfa6ab10242eb6733978b5f6a8d3256d5bde (diff)
downloadapr-a3f42085153d3a7533ee7fd8dc283644439f43d2.tar.gz
Fixes for the implementation, documentation and test case for
apr_socket_recvfrom(); * network_io/unix/sendrecv.c (apr_socket_recvfrom): Reset the socklen argument correctly before calling recvfrom. On success, update all the sockaddr variables for the address returned, not just the port. * include/apr_network_io.h (apr_socket_recvfrom): Document a little better. * test/testsockets.c (sendto_receivefrom): Check that the address is set correctly. git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@467600 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'network_io')
-rw-r--r--network_io/unix/sendrecv.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/network_io/unix/sendrecv.c b/network_io/unix/sendrecv.c
index c1029a14f..5efad149e 100644
--- a/network_io/unix/sendrecv.c
+++ b/network_io/unix/sendrecv.c
@@ -148,6 +148,8 @@ apr_status_t apr_socket_recvfrom(apr_sockaddr_t *from, apr_socket_t *sock,
apr_size_t *len)
{
apr_ssize_t rv;
+
+ from->salen = sizeof(from->sa);
do {
rv = recvfrom(sock->socketdes, buf, (*len), flags,
@@ -172,7 +174,7 @@ apr_status_t apr_socket_recvfrom(apr_sockaddr_t *from, apr_socket_t *sock,
return errno;
}
- from->port = ntohs(from->sa.sin.sin_port);
+ apr_sockaddr_vars_set(from, from->sa.sin.sin_family, ntohs(from->sa.sin.sin_port));
(*len) = rv;
if (rv == 0 && sock->type == SOCK_STREAM) {