summaryrefslogtreecommitdiffstats
path: root/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix
diff options
context:
space:
mode:
authorhongbotian <hongbo.tianhongbo@huawei.com>2015-11-30 03:10:21 -0500
committerhongbotian <hongbo.tianhongbo@huawei.com>2015-11-30 03:10:21 -0500
commitc0b7206652b2852bc574694e7ba07ba1c2acdc00 (patch)
tree5cb95cb0e19e03610525903df46279df2c3b7eb1 /rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix
parentb6d3d6e668b793220f2d3af1bc3e828553dc3fe6 (diff)
delete app
Change-Id: Id4c572809969ebe89e946e88063eaed262cff3f2 Signed-off-by: hongbotian <hongbo.tianhongbo@huawei.com>
Diffstat (limited to 'rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix')
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/.libs/inet_ntop.obin14512 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/.libs/inet_pton.obin15480 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/.libs/sendrecv.obin36784 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/.libs/sockaddr.obin51480 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/.libs/sockets.obin39776 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/.libs/sockopt.obin24368 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/Makefile20
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/Makefile.in20
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/inet_ntop.c243
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/inet_ntop.lo12
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/inet_ntop.obin14384 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/inet_pton.c240
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/inet_pton.lo12
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/inet_pton.obin15416 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sendrecv.c1014
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sendrecv.lo12
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sendrecv.obin36736 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockaddr.c985
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockaddr.lo12
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockaddr.obin51472 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockets.c422
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockets.lo12
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockets.obin39832 -> 0 bytes
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockopt.c393
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockopt.lo12
-rw-r--r--rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockopt.obin24256 -> 0 bytes
26 files changed, 0 insertions, 3409 deletions
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/.libs/inet_ntop.o b/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/.libs/inet_ntop.o
deleted file mode 100644
index 817cc79d..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/.libs/inet_ntop.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/.libs/inet_pton.o b/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/.libs/inet_pton.o
deleted file mode 100644
index 2e7742cd..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/.libs/inet_pton.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/.libs/sendrecv.o b/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/.libs/sendrecv.o
deleted file mode 100644
index 491c3a31..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/.libs/sendrecv.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/.libs/sockaddr.o b/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/.libs/sockaddr.o
deleted file mode 100644
index b2e965fb..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/.libs/sockaddr.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/.libs/sockets.o b/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/.libs/sockets.o
deleted file mode 100644
index fef86515..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/.libs/sockets.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/.libs/sockopt.o b/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/.libs/sockopt.o
deleted file mode 100644
index d0d49c18..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/.libs/sockopt.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/Makefile b/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/Makefile
deleted file mode 100644
index a942d0d5..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/Makefile
+++ /dev/null
@@ -1,20 +0,0 @@
-srcdir = .
-
-
-TARGETS = \
- sendrecv.lo \
- sockets.lo \
- sockopt.lo \
- sockaddr.lo \
- inet_ntop.lo \
- inet_pton.lo
-
-# bring in rules.mk for standard functionality
-include /bottlenecks/rubbos/app/httpd-2.0.64/srclib/apr/build/apr_rules.mk
-
-INCDIR=../../include
-OSDIR=$(INCDIR)/arch/unix
-DEFOSDIR=$(INCDIR)/arch/unix
-INCLUDES=-I$(INCDIR) -I$(OSDIR) -I$(DEFOSDIR)
-
-# DO NOT REMOVE
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/Makefile.in b/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/Makefile.in
deleted file mode 100644
index 3ea7d03b..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/Makefile.in
+++ /dev/null
@@ -1,20 +0,0 @@
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-TARGETS = \
- sendrecv.lo \
- sockets.lo \
- sockopt.lo \
- sockaddr.lo \
- inet_ntop.lo \
- inet_pton.lo
-
-# bring in rules.mk for standard functionality
-@INCLUDE_RULES@
-
-INCDIR=../../include
-OSDIR=$(INCDIR)/arch/@OSDIR@
-DEFOSDIR=$(INCDIR)/arch/@DEFAULT_OSDIR@
-INCLUDES=-I$(INCDIR) -I$(OSDIR) -I$(DEFOSDIR)
-
-# DO NOT REMOVE
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/inet_ntop.c b/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/inet_ntop.c
deleted file mode 100644
index 78dd3baa..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/inet_ntop.c
+++ /dev/null
@@ -1,243 +0,0 @@
-/* Copyright (c) 1996 by Internet Software Consortium.
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
- * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
- * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
- * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
- * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
- * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-#include "apr_private.h"
-#include "apr_arch_networkio.h"
-#include "apr_strings.h"
-
-#if APR_HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#if APR_HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#if APR_HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if APR_HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-#include <string.h>
-#if APR_HAVE_ERRNO_H
-#include <errno.h>
-#endif
-#include <stdio.h>
-
-#ifndef IN6ADDRSZ
-#define IN6ADDRSZ 16
-#endif
-
-#ifndef INT16SZ
-#define INT16SZ sizeof(apr_int16_t)
-#endif
-
-#ifndef __P
-#define __P(x) x
-#endif
-
-#if !defined(EAFNOSUPPORT) && defined(WSAEAFNOSUPPORT)
-#define EAFNOSUPPORT WSAEAFNOSUPPORT
-#endif
-
-/*
- * WARNING: Don't even consider trying to compile this on a system where
- * sizeof(int) < 4. sizeof(int) > 4 is fine; all the world's not a VAX.
- */
-
-static const char *inet_ntop4 __P((const unsigned char *src, char *dst, apr_size_t size));
-#if APR_HAVE_IPV6
-static const char *inet_ntop6 __P((const unsigned char *src, char *dst, apr_size_t size));
-#endif
-
-/* char *
- * inet_ntop(af, src, dst, size)
- * convert a network format address to presentation format.
- * return:
- * pointer to presentation format address (`dst'), or NULL (see errno).
- * author:
- * Paul Vixie, 1996.
- */
-const char *
-apr_inet_ntop(int af, const void *src, char *dst, apr_size_t size)
-{
- switch (af) {
- case AF_INET:
- return (inet_ntop4(src, dst, size));
-#if APR_HAVE_IPV6
- case AF_INET6:
- return (inet_ntop6(src, dst, size));
-#endif
- default:
- errno = EAFNOSUPPORT;
- return (NULL);
- }
- /* NOTREACHED */
-}
-
-/* const char *
- * inet_ntop4(src, dst, size)
- * format an IPv4 address, more or less like inet_ntoa()
- * return:
- * `dst' (as a const)
- * notes:
- * (1) uses no statics
- * (2) takes a u_char* not an in_addr as input
- * author:
- * Paul Vixie, 1996.
- */
-static const char *
-inet_ntop4(const unsigned char *src, char *dst, apr_size_t size)
-{
- const apr_size_t MIN_SIZE = 16; /* space for 255.255.255.255\0 */
- int n = 0;
- char *next = dst;
-
- if (size < MIN_SIZE) {
- errno = ENOSPC;
- return NULL;
- }
- do {
- unsigned char u = *src++;
- if (u > 99) {
- *next++ = '0' + u/100;
- u %= 100;
- *next++ = '0' + u/10;
- u %= 10;
- }
- else if (u > 9) {
- *next++ = '0' + u/10;
- u %= 10;
- }
- *next++ = '0' + u;
- *next++ = '.';
- n++;
- } while (n < 4);
- *--next = 0;
- return dst;
-}
-
-#if APR_HAVE_IPV6
-/* const char *
- * inet_ntop6(src, dst, size)
- * convert IPv6 binary address into presentation (printable) format
- * author:
- * Paul Vixie, 1996.
- */
-static const char *
-inet_ntop6(const unsigned char *src, char *dst, apr_size_t size)
-{
- /*
- * Note that int32_t and int16_t need only be "at least" large enough
- * to contain a value of the specified size. On some systems, like
- * Crays, there is no such thing as an integer variable with 16 bits.
- * Keep this in mind if you think this function should have been coded
- * to use pointer overlays. All the world's not a VAX.
- */
- char tmp[sizeof "ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255"], *tp;
- struct { int base, len; } best = {-1, 0}, cur = {-1, 0};
- unsigned int words[IN6ADDRSZ / INT16SZ];
- int i;
- const unsigned char *next_src, *src_end;
- unsigned int *next_dest;
-
- /*
- * Preprocess:
- * Copy the input (bytewise) array into a wordwise array.
- * Find the longest run of 0x00's in src[] for :: shorthanding.
- */
- next_src = src;
- src_end = src + IN6ADDRSZ;
- next_dest = words;
- i = 0;
- do {
- unsigned int next_word = (unsigned int)*next_src++;
- next_word <<= 8;
- next_word |= (unsigned int)*next_src++;
- *next_dest++ = next_word;
-
- if (next_word == 0) {
- if (cur.base == -1) {
- cur.base = i;
- cur.len = 1;
- }
- else {
- cur.len++;
- }
- } else {
- if (cur.base != -1) {
- if (best.base == -1 || cur.len > best.len) {
- best = cur;
- }
- cur.base = -1;
- }
- }
-
- i++;
- } while (next_src < src_end);
-
- if (cur.base != -1) {
- if (best.base == -1 || cur.len > best.len) {
- best = cur;
- }
- }
- if (best.base != -1 && best.len < 2) {
- best.base = -1;
- }
-
- /*
- * Format the result.
- */
- tp = tmp;
- for (i = 0; i < (IN6ADDRSZ / INT16SZ);) {
- /* Are we inside the best run of 0x00's? */
- if (i == best.base) {
- *tp++ = ':';
- i += best.len;
- continue;
- }
- /* Are we following an initial run of 0x00s or any real hex? */
- if (i != 0) {
- *tp++ = ':';
- }
- /* Is this address an encapsulated IPv4? */
- if (i == 6 && best.base == 0 &&
- (best.len == 6 || (best.len == 5 && words[5] == 0xffff))) {
- if (!inet_ntop4(src+12, tp, sizeof tmp - (tp - tmp))) {
- return (NULL);
- }
- tp += strlen(tp);
- break;
- }
- tp += apr_snprintf(tp, sizeof tmp - (tp - tmp), "%x", words[i]);
- i++;
- }
- /* Was it a trailing run of 0x00's? */
- if (best.base != -1 && (best.base + best.len) == (IN6ADDRSZ / INT16SZ)) {
- *tp++ = ':';
- }
- *tp++ = '\0';
-
- /*
- * Check for overflow, copy, and we're done.
- */
- if ((apr_size_t)(tp - tmp) > size) {
- errno = ENOSPC;
- return (NULL);
- }
- strcpy(dst, tmp);
- return (dst);
-}
-#endif
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/inet_ntop.lo b/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/inet_ntop.lo
deleted file mode 100644
index 2345ed35..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/inet_ntop.lo
+++ /dev/null
@@ -1,12 +0,0 @@
-# inet_ntop.lo - a libtool object file
-# Generated by ltmain.sh - GNU libtool 1.5.26 (1.1220.2.493 2008/02/01 16:58:18)
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-pic_object='.libs/inet_ntop.o'
-
-# Name of the non-PIC object.
-non_pic_object='inet_ntop.o'
-
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/inet_ntop.o b/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/inet_ntop.o
deleted file mode 100644
index 0812ba54..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/inet_ntop.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/inet_pton.c b/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/inet_pton.c
deleted file mode 100644
index 550ab2a4..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/inet_pton.c
+++ /dev/null
@@ -1,240 +0,0 @@
-/* Copyright (c) 1996 by Internet Software Consortium.
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
- * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
- * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
- * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
- * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
- * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-#include "apr_private.h"
-#include "apr_arch_networkio.h"
-
-#if APR_HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#if APR_HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#if APR_HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#if APR_HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-#include <string.h>
-#if APR_HAVE_ERRNO_H
-#include <errno.h>
-#endif
-
-#ifndef IN6ADDRSZ
-#define IN6ADDRSZ 16
-#endif
-
-#ifndef INT16SZ
-#define INT16SZ sizeof(apr_int16_t)
-#endif
-
-#ifndef INADDRSZ
-#define INADDRSZ 4
-#endif
-
-#ifndef __P
-#define __P(x) x
-#endif
-
-#if !defined(EAFNOSUPPORT) && defined(WSAEAFNOSUPPORT)
-#define EAFNOSUPPORT WSAEAFNOSUPPORT
-#endif
-
-/*
- * WARNING: Don't even consider trying to compile this on a system where
- * sizeof(int) < 4. sizeof(int) > 4 is fine; all the world's not a VAX.
- */
-
-static int inet_pton4 __P((const char *src, unsigned char *dst));
-#if APR_HAVE_IPV6
-static int inet_pton6 __P((const char *src, unsigned char *dst));
-#endif
-
-/* int
- * inet_pton(af, src, dst)
- * convert from presentation format (which usually means ASCII printable)
- * to network format (which is usually some kind of binary format).
- * return:
- * 1 if the address was valid for the specified address family
- * 0 if the address wasn't valid (`dst' is untouched in this case)
- * -1 if some other error occurred (`dst' is untouched in this case, too)
- * author:
- * Paul Vixie, 1996.
- */
-int
-apr_inet_pton(int af, const char *src, void *dst)
-{
- switch (af) {
- case AF_INET:
- return (inet_pton4(src, dst));
-#if APR_HAVE_IPV6
- case AF_INET6:
- return (inet_pton6(src, dst));
-#endif
- default:
- errno = EAFNOSUPPORT;
- return (-1);
- }
- /* NOTREACHED */
-}
-
-/* int
- * inet_pton4(src, dst)
- * like inet_aton() but without all the hexadecimal and shorthand.
- * return:
- * 1 if `src' is a valid dotted quad, else 0.
- * notice:
- * does not touch `dst' unless it's returning 1.
- * author:
- * Paul Vixie, 1996.
- */
-static int
-inet_pton4(const char *src, unsigned char *dst)
-{
- static const char digits[] = "0123456789";
- int saw_digit, octets, ch;
- unsigned char tmp[INADDRSZ], *tp;
-
- saw_digit = 0;
- octets = 0;
- *(tp = tmp) = 0;
- while ((ch = *src++) != '\0') {
- const char *pch;
-
- if ((pch = strchr(digits, ch)) != NULL) {
- unsigned int new = *tp * 10 + (pch - digits);
-
- if (new > 255)
- return (0);
- *tp = new;
- if (! saw_digit) {
- if (++octets > 4)
- return (0);
- saw_digit = 1;
- }
- } else if (ch == '.' && saw_digit) {
- if (octets == 4)
- return (0);
- *++tp = 0;
- saw_digit = 0;
- } else
- return (0);
- }
- if (octets < 4)
- return (0);
-
- memcpy(dst, tmp, INADDRSZ);
- return (1);
-}
-
-#if APR_HAVE_IPV6
-/* int
- * inet_pton6(src, dst)
- * convert presentation level address to network order binary form.
- * return:
- * 1 if `src' is a valid [RFC1884 2.2] address, else 0.
- * notice:
- * (1) does not touch `dst' unless it's returning 1.
- * (2) :: in a full address is silently ignored.
- * credit:
- * inspired by Mark Andrews.
- * author:
- * Paul Vixie, 1996.
- */
-static int
-inet_pton6(const char *src, unsigned char *dst)
-{
- static const char xdigits_l[] = "0123456789abcdef",
- xdigits_u[] = "0123456789ABCDEF";
- unsigned char tmp[IN6ADDRSZ], *tp, *endp, *colonp;
- const char *xdigits, *curtok;
- int ch, saw_xdigit;
- unsigned int val;
-
- memset((tp = tmp), '\0', IN6ADDRSZ);
- endp = tp + IN6ADDRSZ;
- colonp = NULL;
- /* Leading :: requires some special handling. */
- if (*src == ':')
- if (*++src != ':')
- return (0);
- curtok = src;
- saw_xdigit = 0;
- val = 0;
- while ((ch = *src++) != '\0') {
- const char *pch;
-
- if ((pch = strchr((xdigits = xdigits_l), ch)) == NULL)
- pch = strchr((xdigits = xdigits_u), ch);
- if (pch != NULL) {
- val <<= 4;
- val |= (pch - xdigits);
- if (val > 0xffff)
- return (0);
- saw_xdigit = 1;
- continue;
- }
- if (ch == ':') {
- curtok = src;
- if (!saw_xdigit) {
- if (colonp)
- return (0);
- colonp = tp;
- continue;
- }
- if (tp + INT16SZ > endp)
- return (0);
- *tp++ = (unsigned char) (val >> 8) & 0xff;
- *tp++ = (unsigned char) val & 0xff;
- saw_xdigit = 0;
- val = 0;
- continue;
- }
- if (ch == '.' && ((tp + INADDRSZ) <= endp) &&
- inet_pton4(curtok, tp) > 0) {
- tp += INADDRSZ;
- saw_xdigit = 0;
- break; /* '\0' was seen by inet_pton4(). */
- }
- return (0);
- }
- if (saw_xdigit) {
- if (tp + INT16SZ > endp)
- return (0);
- *tp++ = (unsigned char) (val >> 8) & 0xff;
- *tp++ = (unsigned char) val & 0xff;
- }
- if (colonp != NULL) {
- /*
- * Since some memmove()'s erroneously fail to handle
- * overlapping regions, we'll do the shift by hand.
- */
- const int n = tp - colonp;
- int i;
-
- for (i = 1; i <= n; i++) {
- endp[- i] = colonp[n - i];
- colonp[n - i] = 0;
- }
- tp = endp;
- }
- if (tp != endp)
- return (0);
- memcpy(dst, tmp, IN6ADDRSZ);
- return (1);
-}
-#endif
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/inet_pton.lo b/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/inet_pton.lo
deleted file mode 100644
index 780b7a7b..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/inet_pton.lo
+++ /dev/null
@@ -1,12 +0,0 @@
-# inet_pton.lo - a libtool object file
-# Generated by ltmain.sh - GNU libtool 1.5.26 (1.1220.2.493 2008/02/01 16:58:18)
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-pic_object='.libs/inet_pton.o'
-
-# Name of the non-PIC object.
-non_pic_object='inet_pton.o'
-
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/inet_pton.o b/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/inet_pton.o
deleted file mode 100644
index 0601b0dd..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/inet_pton.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sendrecv.c b/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sendrecv.c
deleted file mode 100644
index bf1bf99f..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sendrecv.c
+++ /dev/null
@@ -1,1014 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_networkio.h"
-#include "apr_support.h"
-
-#if APR_HAS_SENDFILE
-/* This file is needed to allow us access to the apr_file_t internals. */
-#include "apr_arch_file_io.h"
-#endif /* APR_HAS_SENDFILE */
-
-/* sys/sysctl.h is only needed on FreeBSD for include_hdrs_in_length() */
-#if defined(__FreeBSD__) && defined(HAVE_SYS_SYSCTL_H)
-#include <sys/sysctl.h>
-#endif
-
-apr_status_t apr_socket_send(apr_socket_t *sock, const char *buf,
- apr_size_t *len)
-{
- apr_ssize_t rv;
-
- if (sock->netmask & APR_INCOMPLETE_WRITE) {
- sock->netmask &= ~APR_INCOMPLETE_WRITE;
- goto do_select;
- }
-
- do {
- rv = write(sock->socketdes, buf, (*len));
- } while (rv == -1 && errno == EINTR);
-
- while (rv == -1 && (errno == EAGAIN || errno == EWOULDBLOCK)
- && apr_is_option_set(sock->netmask, APR_SO_TIMEOUT)) {
- apr_status_t arv;
-do_select:
- arv = apr_wait_for_io_or_timeout(NULL, sock, 0);
- if (arv != APR_SUCCESS) {
- *len = 0;
- return arv;
- }
- else {
- do {
- rv = write(sock->socketdes, buf, (*len));
- } while (rv == -1 && errno == EINTR);
- }
- }
- if (rv == -1) {
- *len = 0;
- return errno;
- }
- if (apr_is_option_set(sock->netmask, APR_SO_TIMEOUT) && rv < *len) {
- sock->netmask |= APR_INCOMPLETE_WRITE;
- }
- (*len) = rv;
- return APR_SUCCESS;
-}
-
-apr_status_t apr_socket_recv(apr_socket_t *sock, char *buf, apr_size_t *len)
-{
- apr_ssize_t rv;
- apr_status_t arv;
-
- if (sock->netmask & APR_INCOMPLETE_READ) {
- sock->netmask &= ~APR_INCOMPLETE_READ;
- goto do_select;
- }
-
- do {
- rv = read(sock->socketdes, buf, (*len));
- } while (rv == -1 && errno == EINTR);
-
- while (rv == -1 && (errno == EAGAIN || errno == EWOULDBLOCK) &&
- apr_is_option_set(sock->netmask, APR_SO_TIMEOUT)) {
-do_select:
- arv = apr_wait_for_io_or_timeout(NULL, sock, 1);
- if (arv != APR_SUCCESS) {
- *len = 0;
- return arv;
- }
- else {
- do {
- rv = read(sock->socketdes, buf, (*len));
- } while (rv == -1 && errno == EINTR);
- }
- }
- if (rv == -1) {
- (*len) = 0;
- return errno;
- }
- if (apr_is_option_set(sock->netmask, APR_SO_TIMEOUT) && rv < *len) {
- sock->netmask |= APR_INCOMPLETE_READ;
- }
- (*len) = rv;
- if (rv == 0) {
- return APR_EOF;
- }
- return APR_SUCCESS;
-}
-
-apr_status_t apr_socket_sendto(apr_socket_t *sock, apr_sockaddr_t *where,
- apr_int32_t flags, const char *buf,
- apr_size_t *len)
-{
- apr_ssize_t rv;
-
- do {
- rv = sendto(sock->socketdes, buf, (*len), flags,
- (const struct sockaddr*)&where->sa,
- where->salen);
- } while (rv == -1 && errno == EINTR);
-
- while (rv == -1 && (errno == EAGAIN || errno == EWOULDBLOCK)
- && apr_is_option_set(sock->netmask, APR_SO_TIMEOUT)) {
- apr_status_t arv = apr_wait_for_io_or_timeout(NULL, sock, 0);
- if (arv != APR_SUCCESS) {
- *len = 0;
- return arv;
- } else {
- do {
- rv = sendto(sock->socketdes, buf, (*len), flags,
- (const struct sockaddr*)&where->sa,
- where->salen);
- } while (rv == -1 && errno == EINTR);
- }
- }
- if (rv == -1) {
- *len = 0;
- return errno;
- }
- *len = rv;
- return APR_SUCCESS;
-}
-
-apr_status_t apr_socket_recvfrom(apr_sockaddr_t *from, apr_socket_t *sock,
- apr_int32_t flags, char *buf,
- apr_size_t *len)
-{
- apr_ssize_t rv;
-
- do {
- rv = recvfrom(sock->socketdes, buf, (*len), flags,
- (struct sockaddr*)&from->sa, &from->salen);
- } while (rv == -1 && errno == EINTR);
-
- while (rv == -1 && (errno == EAGAIN || errno == EWOULDBLOCK) &&
- apr_is_option_set(sock->netmask, APR_SO_TIMEOUT)) {
- apr_status_t arv = apr_wait_for_io_or_timeout(NULL, sock, 1);
- if (arv != APR_SUCCESS) {
- *len = 0;
- return arv;
- } else {
- do {
- rv = recvfrom(sock->socketdes, buf, (*len), flags,
- (struct sockaddr*)&from->sa, &from->salen);
- } while (rv == -1 && errno == EINTR);
- }
- }
- if (rv == -1) {
- (*len) = 0;
- return errno;
- }
-
- (*len) = rv;
- if (rv == 0 && sock->type == SOCK_STREAM) {
- return APR_EOF;
- }
-
- return APR_SUCCESS;
-}
-
-#ifdef HAVE_WRITEV
-apr_status_t apr_socket_sendv(apr_socket_t * sock, const struct iovec *vec,
- apr_int32_t nvec, apr_size_t *len)
-{
- apr_ssize_t rv;
- apr_size_t requested_len = 0;
- apr_int32_t i;
-
- for (i = 0; i < nvec; i++) {
- requested_len += vec[i].iov_len;
- }
-
- if (sock->netmask & APR_INCOMPLETE_WRITE) {
- sock->netmask &= ~APR_INCOMPLETE_WRITE;
- goto do_select;
- }
-
- do {
- rv = writev(sock->socketdes, vec, nvec);
- } while (rv == -1 && errno == EINTR);
-
- while (rv == -1 && (errno == EAGAIN || errno == EWOULDBLOCK) &&
- apr_is_option_set(sock->netmask, APR_SO_TIMEOUT)) {
- apr_status_t arv;
-do_select:
- arv = apr_wait_for_io_or_timeout(NULL, sock, 0);
- if (arv != APR_SUCCESS) {
- *len = 0;
- return arv;
- }
- else {
- do {
- rv = writev(sock->socketdes, vec, nvec);
- } while (rv == -1 && errno == EINTR);
- }
- }
- if (rv == -1) {
- *len = 0;
- return errno;
- }
- if (apr_is_option_set(sock->netmask, APR_SO_TIMEOUT) &&
- rv < requested_len) {
- sock->netmask |= APR_INCOMPLETE_WRITE;
- }
- (*len) = rv;
- return APR_SUCCESS;
-}
-#endif
-
-#if APR_HAS_SENDFILE
-
-/* TODO: Verify that all platforms handle the fd the same way,
- * i.e. that they don't move the file pointer.
- */
-/* TODO: what should flags be? int_32? */
-
-/* Define a structure to pass in when we have a NULL header value */
-static apr_hdtr_t no_hdtr;
-
-#if defined(__linux__) && defined(HAVE_WRITEV)
-
-apr_status_t apr_socket_sendfile(apr_socket_t *sock, apr_file_t *file,
- apr_hdtr_t *hdtr, apr_off_t *offset,
- apr_size_t *len, apr_int32_t flags)
-{
- off_t off = *offset;
- int rv, nbytes = 0, total_hdrbytes, i;
- apr_status_t arv;
-
- if (!hdtr) {
- hdtr = &no_hdtr;
- }
-
- /* Ignore flags for now. */
- flags = 0;
-
- if (hdtr->numheaders > 0) {
- apr_size_t hdrbytes;
-
- /* cork before writing headers */
- rv = apr_socket_opt_set(sock, APR_TCP_NOPUSH, 1);
- if (rv != APR_SUCCESS) {
- return rv;
- }
-
- /* Now write the headers */
- arv = apr_socket_sendv(sock, hdtr->headers, hdtr->numheaders,
- &hdrbytes);
- if (arv != APR_SUCCESS) {
- *len = 0;
- return errno;
- }
- nbytes += hdrbytes;
-
- /* If this was a partial write and we aren't doing timeouts,
- * return now with the partial byte count; this is a non-blocking
- * socket.
- */
- total_hdrbytes = 0;
- for (i = 0; i < hdtr->numheaders; i++) {
- total_hdrbytes += hdtr->headers[i].iov_len;
- }
- if (hdrbytes < total_hdrbytes) {
- *len = hdrbytes;
- return apr_socket_opt_set(sock, APR_TCP_NOPUSH, 0);
- }
- }
-
- if (sock->netmask & APR_INCOMPLETE_WRITE) {
- sock->netmask &= ~APR_INCOMPLETE_WRITE;
- goto do_select;
- }
-
- do {
- rv = sendfile(sock->socketdes, /* socket */
- file->filedes, /* open file descriptor of the file to be sent */
- &off, /* where in the file to start */
- *len); /* number of bytes to send */
- } while (rv == -1 && errno == EINTR);
-
- while (rv == -1 &&
- (errno == EAGAIN || errno == EWOULDBLOCK) &&
- apr_is_option_set(sock->netmask, APR_SO_TIMEOUT)) {
-do_select:
- arv = apr_wait_for_io_or_timeout(NULL, sock, 0);
- if (arv != APR_SUCCESS) {
- *len = 0;
- return arv;
- }
- else {
- do {
- rv = sendfile(sock->socketdes, /* socket */
- file->filedes, /* open file descriptor of the file to be sent */
- &off, /* where in the file to start */
- *len); /* number of bytes to send */
- } while (rv == -1 && errno == EINTR);
- }
- }
-
- if (rv == -1) {
- *len = nbytes;
- rv = errno;
- apr_socket_opt_set(sock, APR_TCP_NOPUSH, 0);
- return rv;
- }
-
- nbytes += rv;
-
- if (rv < *len) {
- *len = nbytes;
- arv = apr_socket_opt_set(sock, APR_TCP_NOPUSH, 0);
- if (rv > 0) {
-
- /* If this was a partial write, return now with the
- * partial byte count; this is a non-blocking socket.
- */
-
- if (apr_is_option_set(sock->netmask, APR_SO_TIMEOUT)) {
- sock->netmask |= APR_INCOMPLETE_WRITE;
- }
- return arv;
- }
- else {
- /* If the file got smaller mid-request, eventually the offset
- * becomes equal to the new file size and the kernel returns 0.
- * Make this an error so the caller knows to log something and
- * exit.
- */
- return APR_EOF;
- }
- }
-
- /* Now write the footers */
- if (hdtr->numtrailers > 0) {
- apr_size_t trbytes;
- arv = apr_socket_sendv(sock, hdtr->trailers, hdtr->numtrailers,
- &trbytes);
- nbytes += trbytes;
- if (arv != APR_SUCCESS) {
- *len = nbytes;
- rv = errno;
- apr_socket_opt_set(sock, APR_TCP_NOPUSH, 0);
- return rv;
- }
- }
-
- apr_socket_opt_set(sock, APR_TCP_NOPUSH, 0);
-
- (*len) = nbytes;
- return rv < 0 ? errno : APR_SUCCESS;
-}
-
-#elif defined(__FreeBSD__)
-
-static int include_hdrs_in_length(void)
-{
-#ifdef HAVE_SYS_SYSCTL_H
-/* this assumes:
- * if the header exists, so does the sysctlbyname() syscall, and
- * if the header doesn't exist, the kernel is really old
- */
-
-/* see
- * http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/sys/param.h#rev1.61.2.29
- * for kernel version number
- *
- * http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/kern/uipc_syscalls.c#rev1.65.2.10
- * for the sendfile patch
- */
-#define KERNEL_WITH_SENDFILE_LENGTH_FIX 460001
-
- typedef enum { UNKNOWN = 0,
- NEW,
- OLD
- } api_e;
-
- static api_e api;
- int kernel_version;
- apr_size_t kernel_version_size;
-
- if (api != UNKNOWN) {
- return (api == OLD);
- }
- kernel_version = 0; /* silence compiler warning */
- kernel_version_size = sizeof(kernel_version);
- if (sysctlbyname("kern.osreldate", &kernel_version,
- &kernel_version_size, NULL, 0) == 0 &&
- kernel_version < KERNEL_WITH_SENDFILE_LENGTH_FIX) {
- api = OLD;
- return 1;
- }
- /* size of kern.osreldate's output might change in the future
- * causing the sysctlbyname to fail,
- * but if it's the future, we should use the newer API
- */
- api = NEW;
- return 0;
-#else
- /* the build system's kernel is older than 3.4. Use the old API */
- return 1;
-#endif
-}
-
-/* Release 3.1 or greater */
-apr_status_t apr_socket_sendfile(apr_socket_t * sock, apr_file_t * file,
- apr_hdtr_t * hdtr, apr_off_t * offset,
- apr_size_t * len, apr_int32_t flags)
-{
- off_t nbytes = 0;
- int rv, i;
- struct sf_hdtr headerstruct;
- apr_size_t bytes_to_send = *len;
-
- /* Ignore flags for now. */
- flags = 0;
-
- if (!hdtr) {
- hdtr = &no_hdtr;
- }
-
- else if (hdtr->numheaders && include_hdrs_in_length()) {
-
- /* On early versions of FreeBSD sendfile, the number of bytes to send
- * must include the length of the headers. Don't look at the man page
- * for this :( Instead, look at the the logic in
- * src/sys/kern/uipc_syscalls::sendfile().
- *
- * This was fixed in the middle of 4.6-STABLE
- */
- for (i = 0; i < hdtr->numheaders; i++) {
- bytes_to_send += hdtr->headers[i].iov_len;
- }
- }
-
- headerstruct.headers = hdtr->headers;
- headerstruct.hdr_cnt = hdtr->numheaders;
- headerstruct.trailers = hdtr->trailers;
- headerstruct.trl_cnt = hdtr->numtrailers;
-
- /* FreeBSD can send the headers/footers as part of the system call */
- do {
- if (sock->netmask & APR_INCOMPLETE_WRITE) {
- apr_status_t arv;
- sock->netmask &= ~APR_INCOMPLETE_WRITE;
- arv = apr_wait_for_io_or_timeout(NULL, sock, 0);
- if (arv != APR_SUCCESS) {
- *len = 0;
- return arv;
- }
- }
- if (bytes_to_send) {
- /* We won't dare call sendfile() if we don't have
- * header or file bytes to send because bytes_to_send == 0
- * means send the whole file.
- */
- rv = sendfile(file->filedes, /* file to be sent */
- sock->socketdes, /* socket */
- *offset, /* where in the file to start */
- bytes_to_send, /* number of bytes to send */
- &headerstruct, /* Headers/footers */
- &nbytes, /* number of bytes written */
- flags); /* undefined, set to 0 */
-
- if (rv == -1) {
- if (errno == EAGAIN) {
- if (apr_is_option_set(sock->netmask, APR_SO_TIMEOUT)) {
- sock->netmask |= APR_INCOMPLETE_WRITE;
- }
- /* FreeBSD's sendfile can return -1/EAGAIN even if it
- * sent bytes. Sanitize the result so we get normal EAGAIN
- * semantics w.r.t. bytes sent.
- */
- if (nbytes) {
- /* normal exit for a big file & non-blocking io */
- (*len) = nbytes;
- return APR_SUCCESS;
- }
- }
- }
- else { /* rv == 0 (or the kernel is broken) */
- if (nbytes == 0) {
- /* Most likely the file got smaller after the stat.
- * Return an error so the caller can do the Right Thing.
- */
- (*len) = nbytes;
- return APR_EOF;
- }
- }
- }
- else {
- /* just trailer bytes... use writev()
- */
- rv = writev(sock->socketdes,
- hdtr->trailers,
- hdtr->numtrailers);
- if (rv > 0) {
- nbytes = rv;
- rv = 0;
- }
- else {
- nbytes = 0;
- }
- }
- if (rv == -1 &&
- errno == EAGAIN &&
- apr_is_option_set(sock->netmask, APR_SO_TIMEOUT)) {
- apr_status_t arv = apr_wait_for_io_or_timeout(NULL, sock, 0);
- if (arv != APR_SUCCESS) {
- *len = 0;
- return arv;
- }
- }
- } while (rv == -1 && (errno == EINTR || errno == EAGAIN));
-
- (*len) = nbytes;
- if (rv == -1) {
- return errno;
- }
- return APR_SUCCESS;
-}
-
-#elif defined(__hpux) || defined(__hpux__)
-
-/* HP cc in ANSI mode defines __hpux; gcc defines __hpux__ */
-
-/* HP-UX Version 10.30 or greater
- * (no worries, because we only get here if autoconfiguration found sendfile)
- */
-
-/* ssize_t sendfile(int s, int fd, off_t offset, size_t nbytes,
- * const struct iovec *hdtrl, int flags);
- *
- * nbytes is the number of bytes to send just from the file; as with FreeBSD,
- * if nbytes == 0, the rest of the file (from offset) is sent
- */
-
-apr_status_t apr_socket_sendfile(apr_socket_t *sock, apr_file_t *file,
- apr_hdtr_t *hdtr, apr_off_t *offset,
- apr_size_t *len, apr_int32_t flags)
-{
- int i;
- apr_ssize_t rc;
- apr_size_t nbytes = *len, headerlen, trailerlen;
- struct iovec hdtrarray[2];
- char *headerbuf, *trailerbuf;
-
- if (!hdtr) {
- hdtr = &no_hdtr;
- }
-
- /* Ignore flags for now. */
- flags = 0;
-
- /* HP-UX can only send one header iovec and one footer iovec; try to
- * only allocate storage to combine input iovecs when we really have to
- */
-
- switch(hdtr->numheaders) {
- case 0:
- hdtrarray[0].iov_base = NULL;
- hdtrarray[0].iov_len = 0;
- break;
- case 1:
- hdtrarray[0] = hdtr->headers[0];
- break;
- default:
- headerlen = 0;
- for (i = 0; i < hdtr->numheaders; i++) {
- headerlen += hdtr->headers[i].iov_len;
- }
-
- /* XXX: BUHHH? wow, what a memory leak! */
- headerbuf = hdtrarray[0].iov_base = apr_palloc(sock->cntxt, headerlen);
- hdtrarray[0].iov_len = headerlen;
-
- for (i = 0; i < hdtr->numheaders; i++) {
- memcpy(headerbuf, hdtr->headers[i].iov_base,
- hdtr->headers[i].iov_len);
- headerbuf += hdtr->headers[i].iov_len;
- }
- }
-
- switch(hdtr->numtrailers) {
- case 0:
- hdtrarray[1].iov_base = NULL;
- hdtrarray[1].iov_len = 0;
- break;
- case 1:
- hdtrarray[1] = hdtr->trailers[0];
- break;
- default:
- trailerlen = 0;
- for (i = 0; i < hdtr->numtrailers; i++) {
- trailerlen += hdtr->trailers[i].iov_len;
- }
-
- /* XXX: BUHHH? wow, what a memory leak! */
- trailerbuf = hdtrarray[1].iov_base = apr_palloc(sock->cntxt, trailerlen);
- hdtrarray[1].iov_len = trailerlen;
-
- for (i = 0; i < hdtr->numtrailers; i++) {
- memcpy(trailerbuf, hdtr->trailers[i].iov_base,
- hdtr->trailers[i].iov_len);
- trailerbuf += hdtr->trailers[i].iov_len;
- }
- }
-
- do {
- if (nbytes) { /* any bytes to send from the file? */
- rc = sendfile(sock->socketdes, /* socket */
- file->filedes, /* file descriptor to send */
- *offset, /* where in the file to start */
- nbytes, /* number of bytes to send from file */
- hdtrarray, /* Headers/footers */
- flags); /* undefined, set to 0 */
- }
- else { /* we can't call sendfile() with no bytes to send from the file */
- rc = writev(sock->socketdes, hdtrarray, 2);
- }
- } while (rc == -1 && errno == EINTR);
-
- while (rc == -1 &&
- (errno == EAGAIN || errno == EWOULDBLOCK) &&
- apr_is_option_set(sock->netmask, APR_SO_TIMEOUT)) {
- apr_status_t arv = apr_wait_for_io_or_timeout(NULL, sock, 0);
-
- if (arv != APR_SUCCESS) {
- *len = 0;
- return arv;
- }
- else {
- do {
- if (nbytes) {
- rc = sendfile(sock->socketdes, /* socket */
- file->filedes, /* file descriptor to send */
- *offset, /* where in the file to start */
- nbytes, /* number of bytes to send from file */
- hdtrarray, /* Headers/footers */
- flags); /* undefined, set to 0 */
- }
- else { /* we can't call sendfile() with no bytes to send from the file */
- rc = writev(sock->socketdes, hdtrarray, 2);
- }
- } while (rc == -1 && errno == EINTR);
- }
- }
-
- if (rc == -1) {
- *len = 0;
- return errno;
- }
-
- /* Set len to the number of bytes written */
- *len = rc;
- return APR_SUCCESS;
-}
-#elif defined(_AIX) || defined(__MVS__)
-/* AIX and OS/390 have the same send_file() interface.
- *
- * subtle differences:
- * AIX doesn't update the file ptr but OS/390 does
- *
- * availability (correctly determined by autoconf):
- *
- * AIX - version 4.3.2 with APAR IX85388, or version 4.3.3 and above
- * OS/390 - V2R7 and above
- */
-apr_status_t apr_socket_sendfile(apr_socket_t * sock, apr_file_t * file,
- apr_hdtr_t * hdtr, apr_off_t * offset,
- apr_size_t * len, apr_int32_t flags)
-{
- int i, ptr, rv = 0;
- void * hbuf=NULL, * tbuf=NULL;
- apr_status_t arv;
- struct sf_parms parms;
-
- if (!hdtr) {
- hdtr = &no_hdtr;
- }
-
- /* Ignore flags for now. */
- flags = 0;
-
- /* word to the wise: by default, AIX stores files sent by send_file()
- * in the network buffer cache... there are supposedly scenarios
- * where the most recent copy of the file won't be sent, but I can't
- * recreate the potential problem, perhaps because of the way we
- * use send_file()... if you suspect such a problem, try turning
- * on the SF_SYNC_CACHE flag
- */
-
- /* AIX can also send the headers/footers as part of the system call */
- parms.header_length = 0;
- if (hdtr && hdtr->numheaders) {
- if (hdtr->numheaders == 1) {
- parms.header_data = hdtr->headers[0].iov_base;
- parms.header_length = hdtr->headers[0].iov_len;
- }
- else {
- for (i = 0; i < hdtr->numheaders; i++) {
- parms.header_length += hdtr->headers[i].iov_len;
- }
-#if 0
- /* Keepalives make apr_palloc a bad idea */
- hbuf = malloc(parms.header_length);
-#else
- /* but headers are small, so maybe we can hold on to the
- * memory for the life of the socket...
- */
- hbuf = apr_palloc(sock->cntxt, parms.header_length);
-#endif
- ptr = 0;
- for (i = 0; i < hdtr->numheaders; i++) {
- memcpy((char *)hbuf + ptr, hdtr->headers[i].iov_base,
- hdtr->headers[i].iov_len);
- ptr += hdtr->headers[i].iov_len;
- }
- parms.header_data = hbuf;
- }
- }
- else parms.header_data = NULL;
- parms.trailer_length = 0;
- if (hdtr && hdtr->numtrailers) {
- if (hdtr->numtrailers == 1) {
- parms.trailer_data = hdtr->trailers[0].iov_base;
- parms.trailer_length = hdtr->trailers[0].iov_len;
- }
- else {
- for (i = 0; i < hdtr->numtrailers; i++) {
- parms.trailer_length += hdtr->trailers[i].iov_len;
- }
-#if 0
- /* Keepalives make apr_palloc a bad idea */
- tbuf = malloc(parms.trailer_length);
-#else
- tbuf = apr_palloc(sock->cntxt, parms.trailer_length);
-#endif
- ptr = 0;
- for (i = 0; i < hdtr->numtrailers; i++) {
- memcpy((char *)tbuf + ptr, hdtr->trailers[i].iov_base,
- hdtr->trailers[i].iov_len);
- ptr += hdtr->trailers[i].iov_len;
- }
- parms.trailer_data = tbuf;
- }
- }
- else {
- parms.trailer_data = NULL;
- }
-
- /* Whew! Headers and trailers set up. Now for the file data */
-
- parms.file_descriptor = file->filedes;
- parms.file_offset = *offset;
- parms.file_bytes = *len;
-
- /* O.K. All set up now. Let's go to town */
-
- if (sock->netmask & APR_INCOMPLETE_WRITE) {
- sock->netmask &= ~APR_INCOMPLETE_WRITE;
- goto do_select;
- }
-
- do {
- rv = send_file(&(sock->socketdes), /* socket */
- &(parms), /* all data */
- flags); /* flags */
- } while (rv == -1 && errno == EINTR);
-
- while (rv == -1 &&
- (errno == EAGAIN || errno == EWOULDBLOCK) &&
- apr_is_option_set(sock->netmask, APR_SO_TIMEOUT)) {
-do_select:
- arv = apr_wait_for_io_or_timeout(NULL, sock, 0);
- if (arv != APR_SUCCESS) {
- *len = 0;
- return arv;
- }
- else {
- do {
- rv = send_file(&(sock->socketdes), /* socket */
- &(parms), /* all data */
- flags); /* flags */
- } while (rv == -1 && errno == EINTR);
- }
- }
-
- (*len) = parms.bytes_sent;
-
-#if 0
- /* Clean up after ourselves */
- if(hbuf) free(hbuf);
- if(tbuf) free(tbuf);
-#endif
-
- if (rv == -1) {
- return errno;
- }
-
- if (apr_is_option_set(sock->netmask, APR_SO_TIMEOUT) &&
- (parms.bytes_sent < (parms.file_bytes + parms.header_length + parms.trailer_length))) {
- sock->netmask |= APR_INCOMPLETE_WRITE;
- }
-
- return APR_SUCCESS;
-}
-#elif defined(__osf__) && defined (__alpha)
-/* Tru64's sendfile implementation doesn't work, and we need to make sure that
- * we don't use it until it is fixed. If it is used as it is now, it will
- * hang the machine and the only way to fix it is a reboot.
- */
-#elif defined(HAVE_SENDFILEV)
-/* Solaris 8's sendfilev() interface
- *
- * SFV_FD_SELF refers to our memory space.
- *
- * Required Sparc patches (or newer):
- * 111297-01, 108528-09, 109472-06, 109234-03, 108995-02, 111295-01, 109025-03,
- * 108991-13
- * Required x86 patches (or newer):
- * 111298-01, 108529-09, 109473-06, 109235-04, 108996-02, 111296-01, 109026-04,
- * 108992-13
- */
-apr_status_t apr_socket_sendfile(apr_socket_t *sock, apr_file_t *file,
- apr_hdtr_t *hdtr, apr_off_t *offset,
- apr_size_t *len, apr_int32_t flags)
-{
- apr_status_t rv, arv;
- apr_size_t nbytes;
- sendfilevec_t *sfv;
- int vecs, curvec, i, repeat;
- apr_size_t requested_len = 0;
-
- if (!hdtr) {
- hdtr = &no_hdtr;
- }
-
- /* Ignore flags for now. */
- flags = 0;
-
- /* Calculate how much space we need. */
- vecs = hdtr->numheaders + hdtr->numtrailers + 1;
- sfv = apr_palloc(sock->cntxt, sizeof(sendfilevec_t) * vecs);
-
- curvec = 0;
-
- /* Add the headers */
- for (i = 0; i < hdtr->numheaders; i++, curvec++) {
- sfv[curvec].sfv_fd = SFV_FD_SELF;
- sfv[curvec].sfv_flag = 0;
- sfv[curvec].sfv_off = (off_t)hdtr->headers[i].iov_base;
- sfv[curvec].sfv_len = hdtr->headers[i].iov_len;
- requested_len += sfv[curvec].sfv_len;
- }
-
- /* If the len is 0, we skip the file. */
- if (*len)
- {
- sfv[curvec].sfv_fd = file->filedes;
- sfv[curvec].sfv_flag = 0;
- sfv[curvec].sfv_off = *offset;
- sfv[curvec].sfv_len = *len;
- requested_len += sfv[curvec].sfv_len;
-
- curvec++;
- }
- else {
- vecs--;
- }
-
- /* Add the footers */
- for (i = 0; i < hdtr->numtrailers; i++, curvec++) {
- sfv[curvec].sfv_fd = SFV_FD_SELF;
- sfv[curvec].sfv_flag = 0;
- sfv[curvec].sfv_off = (off_t)hdtr->trailers[i].iov_base;
- sfv[curvec].sfv_len = hdtr->trailers[i].iov_len;
- requested_len += sfv[curvec].sfv_len;
- }
-
- /* If the last write couldn't send all the requested data,
- * wait for the socket to become writable before proceeding
- */
- if (sock->netmask & APR_INCOMPLETE_WRITE) {
- sock->netmask &= ~APR_INCOMPLETE_WRITE;
- arv = apr_wait_for_io_or_timeout(NULL, sock, 0);
- if (arv != APR_SUCCESS) {
- *len = 0;
- return arv;
- }
- }
-
- /* Actually do the sendfilev
- *
- * Solaris may return -1/EAGAIN even if it sent bytes on a non-block sock.
- *
- * If no bytes were originally sent (nbytes == 0) and we are on a TIMEOUT
- * socket (which as far as the OS is concerned is a non-blocking socket),
- * we want to retry after waiting for the other side to read the data (as
- * determined by poll). Once it is clear to send, we want to retry
- * sending the sendfilevec_t once more.
- */
- arv = 0;
- do {
- /* Clear out the repeat */
- repeat = 0;
-
- /* socket, vecs, number of vecs, bytes written */
- rv = sendfilev(sock->socketdes, sfv, vecs, &nbytes);
-
- if (rv == -1 && errno == EAGAIN) {
- if (nbytes) {
- rv = 0;
- }
- else if (!arv &&
- apr_is_option_set(sock->netmask, APR_SO_TIMEOUT) == 1) {
- apr_status_t t = apr_wait_for_io_or_timeout(NULL, sock, 0);
-
- if (t != APR_SUCCESS) {
- *len = 0;
- return t;
- }
-
- arv = 1;
- repeat = 1;
- }
- }
- } while ((rv == -1 && errno == EINTR) || repeat);
-
- if (rv == -1) {
- *len = 0;
- return errno;
- }
-
- /* Update how much we sent */
- *len = nbytes;
- if (apr_is_option_set(sock->netmask, APR_SO_TIMEOUT) &&
- (*len < requested_len)) {
- sock->netmask |= APR_INCOMPLETE_WRITE;
- }
- return APR_SUCCESS;
-}
-#else
-#error APR has detected sendfile on your system, but nobody has written a
-#error version of it for APR yet. To get past this, either write apr_sendfile
-#error or change APR_HAS_SENDFILE in apr.h to 0.
-#endif /* __linux__, __FreeBSD__, __HPUX__, _AIX, __MVS__, Tru64/OSF1 */
-
-/* deprecated */
-apr_status_t apr_sendfile(apr_socket_t *sock, apr_file_t *file,
- apr_hdtr_t *hdtr, apr_off_t *offset, apr_size_t *len,
- apr_int32_t flags)
-{
- return apr_socket_sendfile(sock, file, hdtr, offset, len, flags);
-}
-
-#endif /* APR_HAS_SENDFILE */
-
-/* deprecated */
-apr_status_t apr_send(apr_socket_t *sock, const char *buf, apr_size_t *len)
-{
- return apr_socket_send(sock, buf, len);
-}
-
-/* deprecated */
-#ifdef HAVE_WRITEV
-apr_status_t apr_sendv(apr_socket_t * sock, const struct iovec *vec,
- apr_int32_t nvec, apr_size_t *len)
-{
- return apr_socket_sendv(sock, vec, nvec, len);
-}
-#endif
-
-/* deprecated */
-apr_status_t apr_sendto(apr_socket_t *sock, apr_sockaddr_t *where,
- apr_int32_t flags, const char *buf, apr_size_t *len)
-{
- return apr_socket_sendto(sock, where, flags, buf, len);
-}
-
-/* deprecated */
-apr_status_t apr_recvfrom(apr_sockaddr_t *from, apr_socket_t *sock,
- apr_int32_t flags, char *buf,
- apr_size_t *len)
-{
- return apr_socket_recvfrom(from, sock, flags, buf, len);
-}
-
-/* deprecated */
-apr_status_t apr_recv(apr_socket_t *sock, char *buf, apr_size_t *len)
-{
- return apr_socket_recv(sock, buf, len);
-}
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sendrecv.lo b/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sendrecv.lo
deleted file mode 100644
index efa524a6..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sendrecv.lo
+++ /dev/null
@@ -1,12 +0,0 @@
-# sendrecv.lo - a libtool object file
-# Generated by ltmain.sh - GNU libtool 1.5.26 (1.1220.2.493 2008/02/01 16:58:18)
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-pic_object='.libs/sendrecv.o'
-
-# Name of the non-PIC object.
-non_pic_object='sendrecv.o'
-
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sendrecv.o b/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sendrecv.o
deleted file mode 100644
index 4584807f..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sendrecv.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockaddr.c b/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockaddr.c
deleted file mode 100644
index 4ac965d7..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockaddr.c
+++ /dev/null
@@ -1,985 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_networkio.h"
-#include "apr_strings.h"
-#include "apr.h"
-#include "apr_lib.h"
-#include "apr_strings.h"
-#include "apr_private.h"
-
-#if APR_HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-
-#define APR_WANT_STRFUNC
-#include "apr_want.h"
-
-struct apr_ipsubnet_t {
- int family;
-#if APR_HAVE_IPV6
- apr_uint32_t sub[4]; /* big enough for IPv4 and IPv6 addresses */
- apr_uint32_t mask[4];
-#else
- apr_uint32_t sub[1];
- apr_uint32_t mask[1];
-#endif
-};
-
-#if !defined(NETWARE) && !defined(WIN32)
-#ifdef HAVE_SET_H_ERRNO
-#define SET_H_ERRNO(newval) set_h_errno(newval)
-#else
-#define SET_H_ERRNO(newval) h_errno = (newval)
-#endif
-#else
-#define SET_H_ERRNO(newval)
-#endif
-
-#if APR_HAS_THREADS && !defined(GETHOSTBYNAME_IS_THREAD_SAFE) && \
- defined(HAVE_GETHOSTBYNAME_R)
-/* This is the maximum size that may be returned from the reentrant
- * gethostbyname_r function. If the system tries to use more, it
- * should return ERANGE.
- */
-#define GETHOSTBYNAME_BUFLEN 512
-#endif
-
-#ifdef _WIN32_WCE
-/* XXX: BS solution. Need an HAVE_GETSERVBYNAME and actually
- * do something here, to provide the obvious proto mappings.
- */
-static void *getservbyname(const char *name, const char *proto)
-{
- return NULL;
-}
-#endif
-
-static apr_status_t get_local_addr(apr_socket_t *sock)
-{
- sock->local_addr->salen = sizeof(sock->local_addr->sa);
- if (getsockname(sock->socketdes, (struct sockaddr *)&sock->local_addr->sa,
- &sock->local_addr->salen) < 0) {
- return apr_get_netos_error();
- }
- else {
- sock->local_port_unknown = sock->local_interface_unknown = 0;
- /* XXX assumes sin_port and sin6_port at same offset */
- sock->local_addr->port = ntohs(sock->local_addr->sa.sin.sin_port);
- return APR_SUCCESS;
- }
-}
-
-static apr_status_t get_remote_addr(apr_socket_t *sock)
-{
- sock->remote_addr->salen = sizeof(sock->remote_addr->sa);
- if (getpeername(sock->socketdes, (struct sockaddr *)&sock->remote_addr->sa,
- &sock->remote_addr->salen) < 0) {
- return apr_get_netos_error();
- }
- else {
- sock->remote_addr_unknown = 0;
- /* XXX assumes sin_port and sin6_port at same offset */
- sock->remote_addr->port = ntohs(sock->remote_addr->sa.sin.sin_port);
- return APR_SUCCESS;
- }
-}
-
-APR_DECLARE(apr_status_t) apr_sockaddr_port_set(apr_sockaddr_t *sockaddr,
- apr_port_t port)
-{
- sockaddr->port = port;
- /* XXX IPv6: assumes sin_port and sin6_port at same offset */
- sockaddr->sa.sin.sin_port = htons(port);
- return APR_SUCCESS;
-}
-
-/* XXX assumes IPv4... I don't think this function is needed anyway
- * since we have apr_sockaddr_info_get(), but we need to clean up Apache's
- * listen.c a bit more first.
- */
-APR_DECLARE(apr_status_t) apr_sockaddr_ip_set(apr_sockaddr_t *sockaddr,
- const char *addr)
-{
- apr_uint32_t ipaddr;
-
- if (!strcmp(addr, APR_ANYADDR)) {
- sockaddr->sa.sin.sin_addr.s_addr = htonl(INADDR_ANY);
- return APR_SUCCESS;
- }
-
- ipaddr = inet_addr(addr);
- if (ipaddr == (apr_uint32_t)-1) {
-#ifdef WIN32
- return WSAEADDRNOTAVAIL;
-#else
- return errno;
-#endif
- }
-
- sockaddr->sa.sin.sin_addr.s_addr = ipaddr;
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_sockaddr_port_get(apr_port_t *port,
- apr_sockaddr_t *sockaddr)
-{
- *port = sockaddr->port;
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_sockaddr_ip_get(char **addr,
- apr_sockaddr_t *sockaddr)
-{
- *addr = apr_palloc(sockaddr->pool, sockaddr->addr_str_len);
- apr_inet_ntop(sockaddr->family,
- sockaddr->ipaddr_ptr,
- *addr,
- sockaddr->addr_str_len);
-#if APR_HAVE_IPV6
- if (sockaddr->family == AF_INET6 &&
- IN6_IS_ADDR_V4MAPPED((struct in6_addr *)sockaddr->ipaddr_ptr)) {
- /* This is an IPv4-mapped IPv6 address; drop the leading
- * part of the address string so we're left with the familiar
- * IPv4 format.
- */
- *addr += strlen("::ffff:");
- }
-#endif
- return APR_SUCCESS;
-}
-
-void apr_sockaddr_vars_set(apr_sockaddr_t *addr, int family, apr_port_t port)
-{
- addr->family = family;
- addr->sa.sin.sin_family = family;
- if (port) {
- /* XXX IPv6: assumes sin_port and sin6_port at same offset */
- addr->sa.sin.sin_port = htons(port);
- addr->port = port;
- }
-
- if (family == APR_INET) {
- addr->salen = sizeof(struct sockaddr_in);
- addr->addr_str_len = 16;
- addr->ipaddr_ptr = &(addr->sa.sin.sin_addr);
- addr->ipaddr_len = sizeof(struct in_addr);
- }
-#if APR_HAVE_IPV6
- else if (family == APR_INET6) {
- addr->salen = sizeof(struct sockaddr_in6);
- addr->addr_str_len = 46;
- addr->ipaddr_ptr = &(addr->sa.sin6.sin6_addr);
- addr->ipaddr_len = sizeof(struct in6_addr);
- }
-#endif
-}
-
-APR_DECLARE(apr_status_t) apr_socket_addr_get(apr_sockaddr_t **sa,
- apr_interface_e which,
- apr_socket_t *sock)
-{
- if (which == APR_LOCAL) {
- if (sock->local_interface_unknown || sock->local_port_unknown) {
- apr_status_t rv = get_local_addr(sock);
-
- if (rv != APR_SUCCESS) {
- return rv;
- }
- }
- *sa = sock->local_addr;
- }
- else if (which == APR_REMOTE) {
- if (sock->remote_addr_unknown) {
- apr_status_t rv = get_remote_addr(sock);
-
- if (rv != APR_SUCCESS) {
- return rv;
- }
- }
- *sa = sock->remote_addr;
- }
- else {
- *sa = NULL;
- return APR_EINVAL;
- }
- return APR_SUCCESS;
-}
-
-APR_DECLARE(apr_status_t) apr_parse_addr_port(char **addr,
- char **scope_id,
- apr_port_t *port,
- const char *str,
- apr_pool_t *p)
-{
- const char *ch, *lastchar;
- int big_port;
- apr_size_t addrlen;
-
- *addr = NULL; /* assume not specified */
- *scope_id = NULL; /* assume not specified */
- *port = 0; /* assume not specified */
-
- /* First handle the optional port number. That may be all that
- * is specified in the string.
- */
- ch = lastchar = str + strlen(str) - 1;
- while (ch >= str && apr_isdigit(*ch)) {
- --ch;
- }
-
- if (ch < str) { /* Entire string is the port. */
- big_port = atoi(str);
- if (big_port < 1 || big_port > 65535) {
- return APR_EINVAL;
- }
- *port = big_port;
- return APR_SUCCESS;
- }
-
- if (*ch == ':' && ch < lastchar) { /* host and port number specified */
- if (ch == str) { /* string starts with ':' -- bad */
- return APR_EINVAL;
- }
- big_port = atoi(ch + 1);
- if (big_port < 1 || big_port > 65535) {
- return APR_EINVAL;
- }
- *port = big_port;
- lastchar = ch - 1;
- }
-
- /* now handle the hostname */
- addrlen = lastchar - str + 1;
-
-/* XXX we don't really have to require APR_HAVE_IPV6 for this;
- * just pass char[] for ipaddr (so we don't depend on struct in6_addr)
- * and always define APR_INET6
- */
-#if APR_HAVE_IPV6
- if (*str == '[') {
- const char *end_bracket = memchr(str, ']', addrlen);
- struct in6_addr ipaddr;
- const char *scope_delim;
-
- if (!end_bracket || end_bracket != lastchar) {
- *port = 0;
- return APR_EINVAL;
- }
-
- /* handle scope id; this is the only context where it is allowed */
- scope_delim = memchr(str, '%', addrlen);
- if (scope_delim) {
- if (scope_delim == end_bracket - 1) { /* '%' without scope id */
- *port = 0;
- return APR_EINVAL;
- }
- addrlen = scope_delim - str - 1;
- *scope_id = apr_palloc(p, end_bracket - scope_delim);
- memcpy(*scope_id, scope_delim + 1, end_bracket - scope_delim - 1);
- (*scope_id)[end_bracket - scope_delim - 1] = '\0';
- }
- else {
- addrlen = addrlen - 2; /* minus 2 for '[' and ']' */
- }
-
- *addr = apr_palloc(p, addrlen + 1);
- memcpy(*addr,
- str + 1,
- addrlen);
- (*addr)[addrlen] = '\0';
- if (apr_inet_pton(AF_INET6, *addr, &ipaddr) != 1) {
- *addr = NULL;
- *scope_id = NULL;
- *port = 0;
- return APR_EINVAL;
- }
- }
- else
-#endif
- {
- /* XXX If '%' is not a valid char in a DNS name, we *could* check
- * for bogus scope ids first.
- */
- *addr = apr_palloc(p, addrlen + 1);
- memcpy(*addr, str, addrlen);
- (*addr)[addrlen] = '\0';
- }
- return APR_SUCCESS;
-}
-
-#if defined(HAVE_GETADDRINFO)
-
-static apr_status_t call_resolver(apr_sockaddr_t **sa,
- const char *hostname, apr_int32_t family,
- apr_port_t port, apr_int32_t flags,
- apr_pool_t *p)
-{
- struct addrinfo hints, *ai, *ai_list;
- apr_sockaddr_t *prev_sa;
- int error;
- char *servname = NULL;
-
- memset(&hints, 0, sizeof(hints));
- hints.ai_family = family;
- hints.ai_socktype = SOCK_STREAM;
- if(hostname == NULL) {
-#ifdef AI_PASSIVE
- /* If hostname is NULL, assume we are trying to bind to all
- * interfaces. */
- hints.ai_flags |= AI_PASSIVE;
-#endif
- /* getaddrinfo according to RFC 2553 must have either hostname
- * or servname non-NULL.
- */
-#ifdef _AIX
- /* But current AIX getaddrinfo() doesn't like servname = "0";
- * the "1" won't hurt since we use the port parameter to fill
- * in the returned socket addresses later
- */
- if (!port) {
- servname = "1";
- }
- else
-#endif
- servname = apr_itoa(p, port);
- }
- error = getaddrinfo(hostname, servname, &hints, &ai_list);
- if (error) {
-#ifndef WIN32
- if (error == EAI_SYSTEM) {
- return errno;
- }
- else
-#endif
- {
- /* issues with representing this with APR's error scheme:
- * glibc uses negative values for these numbers, perhaps so
- * they don't conflict with h_errno values... Tru64 uses
- * positive values which conflict with h_errno values
- */
-#if defined(NEGATIVE_EAI)
- error = -error;
-#endif
- return error + APR_OS_START_EAIERR;
- }
- }
-
- prev_sa = NULL;
- ai = ai_list;
- while (ai) { /* while more addresses to report */
- apr_sockaddr_t *new_sa;
-
- /* Ignore anything bogus: getaddrinfo in some old versions of
- * glibc will return AF_UNIX entries for AF_UNSPEC+AI_PASSIVE
- * lookups. */
- if (ai->ai_family != AF_INET && ai->ai_family != AF_INET6) {
- ai = ai->ai_next;
- continue;
- }
-
- new_sa = apr_pcalloc(p, sizeof(apr_sockaddr_t));
-
- new_sa->pool = p;
- memcpy(&new_sa->sa, ai->ai_addr, ai->ai_addrlen);
- apr_sockaddr_vars_set(new_sa, ai->ai_family, port);
-
- if (!prev_sa) { /* first element in new list */
- if (hostname) {
- new_sa->hostname = apr_pstrdup(p, hostname);
- }
- *sa = new_sa;
- }
- else {
- new_sa->hostname = prev_sa->hostname;
- prev_sa->next = new_sa;
- }
-
- prev_sa = new_sa;
- ai = ai->ai_next;
- }
- freeaddrinfo(ai_list);
- return APR_SUCCESS;
-}
-
-static apr_status_t find_addresses(apr_sockaddr_t **sa,
- const char *hostname, apr_int32_t family,
- apr_port_t port, apr_int32_t flags,
- apr_pool_t *p)
-{
- if (flags & APR_IPV4_ADDR_OK) {
- apr_status_t error = call_resolver(sa, hostname, AF_INET, port, flags, p);
-
-#if APR_HAVE_IPV6
- if (error) {
- family = AF_INET6; /* try again */
- }
- else
-#endif
- return error;
- }
-#if APR_HAVE_IPV6
- else if (flags & APR_IPV6_ADDR_OK) {
- apr_status_t error = call_resolver(sa, hostname, AF_INET6, port, flags, p);
-
- if (error) {
- family = AF_INET; /* try again */
- }
- else {
- return APR_SUCCESS;
- }
- }
-#endif
-
- return call_resolver(sa, hostname, family, port, flags, p);
-}
-
-#else /* end of HAVE_GETADDRINFO code */
-
-static apr_status_t find_addresses(apr_sockaddr_t **sa,
- const char *hostname, apr_int32_t family,
- apr_port_t port, apr_int32_t flags,
- apr_pool_t *p)
-{
- struct hostent *hp;
- apr_sockaddr_t *prev_sa;
- int curaddr;
-#if APR_HAS_THREADS && !defined(GETHOSTBYNAME_IS_THREAD_SAFE) && \
- defined(HAVE_GETHOSTBYNAME_R) && !defined(BEOS)
-#ifdef GETHOSTBYNAME_R_HOSTENT_DATA
- struct hostent_data hd;
-#else
- /* If you see ERANGE, that means GETHOSBYNAME_BUFLEN needs to be
- * bumped. */
- char tmp[GETHOSTBYNAME_BUFLEN];
-#endif
- int hosterror;
-#endif
- struct hostent hs;
- struct in_addr ipaddr;
- char *addr_list[2];
- const char *orig_hostname = hostname;
-
- if (hostname == NULL) {
- /* if we are given a NULL hostname, assume '0.0.0.0' */
- hostname = "0.0.0.0";
- }
-
- if (*hostname >= '0' && *hostname <= '9' &&
- strspn(hostname, "0123456789.") == strlen(hostname)) {
-
- ipaddr.s_addr = inet_addr(hostname);
- addr_list[0] = (char *)&ipaddr;
- addr_list[1] = NULL; /* just one IP in list */
- hs.h_addr_list = (char **)addr_list;
- hp = &hs;
- }
- else {
-#if APR_HAS_THREADS && !defined(GETHOSTBYNAME_IS_THREAD_SAFE) && \
- defined(HAVE_GETHOSTBYNAME_R) && !defined(BEOS)
-#if defined(GETHOSTBYNAME_R_HOSTENT_DATA)
- /* AIX, HP/UX, D/UX et alia */
- gethostbyname_r(hostname, &hs, &hd);
- hp = &hs;
-#else
-#if defined(GETHOSTBYNAME_R_GLIBC2)
- /* Linux glibc2+ */
- gethostbyname_r(hostname, &hs, tmp, GETHOSTBYNAME_BUFLEN - 1,
- &hp, &hosterror);
-#else
- /* Solaris, Irix et alia */
- hp = gethostbyname_r(hostname, &hs, tmp, GETHOSTBYNAME_BUFLEN - 1,
- &hosterror);
-#endif /* !defined(GETHOSTBYNAME_R_GLIBC2) */
- if (!hp) {
- return (hosterror + APR_OS_START_SYSERR);
- }
-#endif /* !defined(GETHOSTBYNAME_R_HOSTENT_DATA) */
-#else
- hp = gethostbyname(hostname);
-#endif
-
- if (!hp) {
-#ifdef WIN32
- return apr_get_netos_error();
-#else
- return (h_errno + APR_OS_START_SYSERR);
-#endif
- }
- }
-
- prev_sa = NULL;
- curaddr = 0;
- while (hp->h_addr_list[curaddr]) {
- apr_sockaddr_t *new_sa = apr_pcalloc(p, sizeof(apr_sockaddr_t));
-
- new_sa->pool = p;
- new_sa->sa.sin.sin_addr = *(struct in_addr *)hp->h_addr_list[curaddr];
- apr_sockaddr_vars_set(new_sa, AF_INET, port);
-
- if (!prev_sa) { /* first element in new list */
- if (orig_hostname) {
- new_sa->hostname = apr_pstrdup(p, orig_hostname);
- }
- *sa = new_sa;
- }
- else {
- new_sa->hostname = prev_sa->hostname;
- prev_sa->next = new_sa;
- }
-
- prev_sa = new_sa;
- ++curaddr;
- }
-
- return APR_SUCCESS;
-}
-
-#endif /* end of !HAVE_GETADDRINFO code */
-
-APR_DECLARE(apr_status_t) apr_sockaddr_info_get(apr_sockaddr_t **sa,
- const char *hostname,
- apr_int32_t family, apr_port_t port,
- apr_int32_t flags, apr_pool_t *p)
-{
- apr_int32_t masked;
- *sa = NULL;
-
- if ((masked = flags & (APR_IPV4_ADDR_OK | APR_IPV6_ADDR_OK))) {
- if (!hostname ||
- family != AF_UNSPEC ||
- masked == (APR_IPV4_ADDR_OK | APR_IPV6_ADDR_OK)) {
- return APR_EINVAL;
- }
-#if !APR_HAVE_IPV6
- if (flags & APR_IPV6_ADDR_OK) {
- return APR_ENOTIMPL;
- }
-#endif
- }
-#if !APR_HAVE_IPV6
- /* What may happen is that APR is not IPv6-enabled, but we're still
- * going to call getaddrinfo(), so we have to tell the OS we only
- * want IPv4 addresses back since we won't know what to do with
- * IPv6 addresses.
- */
- if (family == APR_UNSPEC) {
- family = APR_INET;
- }
-#endif
-
- return find_addresses(sa, hostname, family, port, flags, p);
-}
-
-APR_DECLARE(apr_status_t) apr_getnameinfo(char **hostname,
- apr_sockaddr_t *sockaddr,
- apr_int32_t flags)
-{
-#if defined(HAVE_GETNAMEINFO)
- int rc;
-#if defined(NI_MAXHOST)
- char tmphostname[NI_MAXHOST];
-#else
- char tmphostname[256];
-#endif
-
- /* don't know if it is portable for getnameinfo() to set h_errno;
- * clear it then see if it was set */
- SET_H_ERRNO(0);
-
- /* default flags are NI_NAMREQD; otherwise, getnameinfo() will return
- * a numeric address string if it fails to resolve the host name;
- * that is *not* what we want here
- *
- * For IPv4-mapped IPv6 addresses, drop down to IPv4 before calling
- * getnameinfo() to avoid getnameinfo bugs (MacOS X, glibc).
- */
-#if APR_HAVE_IPV6
- if (sockaddr->family == AF_INET6 &&
- IN6_IS_ADDR_V4MAPPED(&sockaddr->sa.sin6.sin6_addr)) {
- struct sockaddr_in tmpsa;
- tmpsa.sin_family = AF_INET;
- tmpsa.sin_port = 0;
- tmpsa.sin_addr.s_addr = ((apr_uint32_t *)sockaddr->ipaddr_ptr)[3];
-#ifdef SIN6_LEN
- tmpsa.sin_len = sizeof(tmpsa);
-#endif
-
- rc = getnameinfo((const struct sockaddr *)&tmpsa, sizeof(tmpsa),
- tmphostname, sizeof(tmphostname), NULL, 0,
- flags != 0 ? flags : NI_NAMEREQD);
- }
- else
-#endif
- rc = getnameinfo((const struct sockaddr *)&sockaddr->sa, sockaddr->salen,
- tmphostname, sizeof(tmphostname), NULL, 0,
- flags != 0 ? flags : NI_NAMEREQD);
- if (rc != 0) {
- *hostname = NULL;
-
-#ifndef WIN32
- /* something went wrong. Look at the EAI_ error code */
- if (rc == EAI_SYSTEM) {
- /* EAI_SYSTEM System error returned in errno. */
- /* IMHO, Implementations that set h_errno a simply broken. */
- if (h_errno) { /* for broken implementations which set h_errno */
- return h_errno + APR_OS_START_SYSERR;
- }
- else { /* "normal" case */
- return errno + APR_OS_START_SYSERR;
- }
- }
- else
-#endif
- {
-#if defined(NEGATIVE_EAI)
- if (rc < 0) rc = -rc;
-#endif
- return rc + APR_OS_START_EAIERR; /* return the EAI_ error */
- }
- }
- *hostname = sockaddr->hostname = apr_pstrdup(sockaddr->pool,
- tmphostname);
- return APR_SUCCESS;
-#else
-#if APR_HAS_THREADS && !defined(GETHOSTBYADDR_IS_THREAD_SAFE) && \
- defined(HAVE_GETHOSTBYADDR_R) && !defined(BEOS)
-#ifdef GETHOSTBYNAME_R_HOSTENT_DATA
- struct hostent_data hd;
-#else
- char tmp[GETHOSTBYNAME_BUFLEN];
-#endif
- int hosterror;
- struct hostent hs, *hptr;
-
-#if defined(GETHOSTBYNAME_R_HOSTENT_DATA)
- /* AIX, HP/UX, D/UX et alia */
- gethostbyaddr_r((char *)&sockaddr->sa.sin.sin_addr,
- sizeof(struct in_addr), AF_INET, &hs, &hd);
- hptr = &hs;
-#else
-#if defined(GETHOSTBYNAME_R_GLIBC2)
- /* Linux glibc2+ */
- gethostbyaddr_r((char *)&sockaddr->sa.sin.sin_addr,
- sizeof(struct in_addr), AF_INET,
- &hs, tmp, GETHOSTBYNAME_BUFLEN - 1, &hptr, &hosterror);
-#else
- /* Solaris, Irix et alia */
- hptr = gethostbyaddr_r((char *)&sockaddr->sa.sin.sin_addr,
- sizeof(struct in_addr), AF_INET,
- &hs, tmp, GETHOSTBYNAME_BUFLEN, &hosterror);
-#endif /* !defined(GETHOSTBYNAME_R_GLIBC2) */
- if (!hptr) {
- *hostname = NULL;
- return hosterror + APR_OS_START_SYSERR;
- }
-#endif /* !defined(GETHOSTBYNAME_R_HOSTENT_DATA) */
-#else
- struct hostent *hptr;
- hptr = gethostbyaddr((char *)&sockaddr->sa.sin.sin_addr,
- sizeof(struct in_addr), AF_INET);
-#endif
-
- if (hptr) {
- *hostname = sockaddr->hostname = apr_pstrdup(sockaddr->pool, hptr->h_name);
- return APR_SUCCESS;
- }
- *hostname = NULL;
-#if defined(WIN32)
- return apr_get_netos_error();
-#elif defined(OS2)
- return h_errno;
-#else
- return h_errno + APR_OS_START_SYSERR;
-#endif
-#endif
-}
-
-APR_DECLARE(apr_status_t) apr_getservbyname(apr_sockaddr_t *sockaddr,
- const char *servname)
-{
- struct servent *se;
-
- if (servname == NULL)
- return APR_EINVAL;
-
- if ((se = getservbyname(servname, NULL)) != NULL){
- sockaddr->port = htons(se->s_port);
- sockaddr->servname = apr_pstrdup(sockaddr->pool, servname);
- sockaddr->sa.sin.sin_port = se->s_port;
- return APR_SUCCESS;
- }
- return APR_ENOENT;
-}
-
-#define V4MAPPED_EQUAL(a,b) \
-((a)->sa.sin.sin_family == AF_INET && \
- (b)->sa.sin.sin_family == AF_INET6 && \
- IN6_IS_ADDR_V4MAPPED((struct in6_addr *)(b)->ipaddr_ptr) && \
- !memcmp((a)->ipaddr_ptr, \
- &((struct in6_addr *)(b)->ipaddr_ptr)->s6_addr[12], \
- (a)->ipaddr_len))
-
-APR_DECLARE(int) apr_sockaddr_equal(const apr_sockaddr_t *addr1,
- const apr_sockaddr_t *addr2)
-{
- if (addr1->ipaddr_len == addr2->ipaddr_len &&
- !memcmp(addr1->ipaddr_ptr, addr2->ipaddr_ptr, addr1->ipaddr_len)) {
- return 1;
- }
-#if APR_HAVE_IPV6
- if (V4MAPPED_EQUAL(addr1, addr2)) {
- return 1;
- }
- if (V4MAPPED_EQUAL(addr2, addr1)) {
- return 1;
- }
-#endif
- return 0; /* not equal */
-}
-
-static apr_status_t parse_network(apr_ipsubnet_t *ipsub, const char *network)
-{
- /* legacy syntax for ip addrs: a.b.c. ==> a.b.c.0/24 for example */
- int shift;
- char *s, *t;
- int octet;
- char buf[sizeof "255.255.255.255"];
-
- if (strlen(network) < sizeof buf) {
- strcpy(buf, network);
- }
- else {
- return APR_EBADIP;
- }
-
- /* parse components */
- s = buf;
- ipsub->sub[0] = 0;
- ipsub->mask[0] = 0;
- shift = 24;
- while (*s) {
- t = s;
- if (!apr_isdigit(*t)) {
- return APR_EBADIP;
- }
- while (apr_isdigit(*t)) {
- ++t;
- }
- if (*t == '.') {
- *t++ = 0;
- }
- else if (*t) {
- return APR_EBADIP;
- }
- if (shift < 0) {
- return APR_EBADIP;
- }
- octet = atoi(s);
- if (octet < 0 || octet > 255) {
- return APR_EBADIP;
- }
- ipsub->sub[0] |= octet << shift;
- ipsub->mask[0] |= 0xFFUL << shift;
- s = t;
- shift -= 8;
- }
- ipsub->sub[0] = ntohl(ipsub->sub[0]);
- ipsub->mask[0] = ntohl(ipsub->mask[0]);
- ipsub->family = AF_INET;
- return APR_SUCCESS;
-}
-
-/* return values:
- * APR_EINVAL not an IP address; caller should see if it is something else
- * APR_BADIP IP address portion is is not valid
- * APR_BADMASK mask portion is not valid
- */
-
-static apr_status_t parse_ip(apr_ipsubnet_t *ipsub, const char *ipstr, int network_allowed)
-{
- /* supported flavors of IP:
- *
- * . IPv6 numeric address string (e.g., "fe80::1")
- *
- * IMPORTANT: Don't store IPv4-mapped IPv6 address as an IPv6 address.
- *
- * . IPv4 numeric address string (e.g., "127.0.0.1")
- *
- * . IPv4 network string (e.g., "9.67")
- *
- * IMPORTANT: This network form is only allowed if network_allowed is on.
- */
- int rc;
-
-#if APR_HAVE_IPV6
- rc = apr_inet_pton(AF_INET6, ipstr, ipsub->sub);
- if (rc == 1) {
- if (IN6_IS_ADDR_V4MAPPED((struct in6_addr *)ipsub->sub)) {
- /* apr_ipsubnet_test() assumes that we don't create IPv4-mapped IPv6
- * addresses; this of course forces the user to specify IPv4 addresses
- * in a.b.c.d style instead of ::ffff:a.b.c.d style.
- */
- return APR_EBADIP;
- }
- ipsub->family = AF_INET6;
- }
- else
-#endif
- {
- rc = apr_inet_pton(AF_INET, ipstr, ipsub->sub);
- if (rc == 1) {
- ipsub->family = AF_INET;
- }
- }
- if (rc != 1) {
- if (network_allowed) {
- return parse_network(ipsub, ipstr);
- }
- else {
- return APR_EBADIP;
- }
- }
- return APR_SUCCESS;
-}
-
-static int looks_like_ip(const char *ipstr)
-{
- if (strchr(ipstr, ':')) {
- /* definitely not a hostname; assume it is intended to be an IPv6 address */
- return 1;
- }
-
- /* simple IPv4 address string check */
- while ((*ipstr == '.') || apr_isdigit(*ipstr))
- ipstr++;
- return (*ipstr == '\0');
-}
-
-static void fix_subnet(apr_ipsubnet_t *ipsub)
-{
- /* in case caller specified more bits in network address than are
- * valid according to the mask, turn off the extra bits
- */
- int i;
-
- for (i = 0; i < sizeof ipsub->mask / sizeof(apr_int32_t); i++) {
- ipsub->sub[i] &= ipsub->mask[i];
- }
-}
-
-/* be sure not to store any IPv4 address as a v4-mapped IPv6 address */
-APR_DECLARE(apr_status_t) apr_ipsubnet_create(apr_ipsubnet_t **ipsub, const char *ipstr,
- const char *mask_or_numbits, apr_pool_t *p)
-{
- apr_status_t rv;
- char *endptr;
- long bits, maxbits = 32;
-
- /* filter out stuff which doesn't look remotely like an IP address; this helps
- * callers like mod_access which have a syntax allowing hostname or IP address;
- * APR_EINVAL tells the caller that it was probably not intended to be an IP
- * address
- */
- if (!looks_like_ip(ipstr)) {
- return APR_EINVAL;
- }
-
- *ipsub = apr_pcalloc(p, sizeof(apr_ipsubnet_t));
-
- /* assume ipstr is an individual IP address, not a subnet */
- memset((*ipsub)->mask, 0xFF, sizeof (*ipsub)->mask);
-
- rv = parse_ip(*ipsub, ipstr, mask_or_numbits == NULL);
- if (rv != APR_SUCCESS) {
- return rv;
- }
-
- if (mask_or_numbits) {
-#if APR_HAVE_IPV6
- if ((*ipsub)->family == AF_INET6) {
- maxbits = 128;
- }
-#endif
- bits = strtol(mask_or_numbits, &endptr, 10);
- if (*endptr == '\0' && bits > 0 && bits <= maxbits) {
- /* valid num-bits string; fill in mask appropriately */
- int cur_entry = 0;
- apr_int32_t cur_bit_value;
-
- memset((*ipsub)->mask, 0, sizeof (*ipsub)->mask);
- while (bits > 32) {
- (*ipsub)->mask[cur_entry] = 0xFFFFFFFF; /* all 32 bits */
- bits -= 32;
- ++cur_entry;
- }
- cur_bit_value = 0x80000000;
- while (bits) {
- (*ipsub)->mask[cur_entry] |= cur_bit_value;
- --bits;
- cur_bit_value /= 2;
- }
- (*ipsub)->mask[cur_entry] = htonl((*ipsub)->mask[cur_entry]);
- }
- else if (apr_inet_pton(AF_INET, mask_or_numbits, (*ipsub)->mask) == 1 &&
- (*ipsub)->family == AF_INET) {
- /* valid IPv4 netmask */
- }
- else {
- return APR_EBADMASK;
- }
- }
-
- fix_subnet(*ipsub);
-
- return APR_SUCCESS;
-}
-
-APR_DECLARE(int) apr_ipsubnet_test(apr_ipsubnet_t *ipsub, apr_sockaddr_t *sa)
-{
-#if APR_HAVE_IPV6
- /* XXX This line will segv on Win32 build with APR_HAVE_IPV6,
- * but without the IPV6 drivers installed.
- */
- if (sa->sa.sin.sin_family == AF_INET) {
- if (ipsub->family == AF_INET &&
- ((sa->sa.sin.sin_addr.s_addr & ipsub->mask[0]) == ipsub->sub[0])) {
- return 1;
- }
- }
- else if (IN6_IS_ADDR_V4MAPPED((struct in6_addr *)sa->ipaddr_ptr)) {
- if (ipsub->family == AF_INET &&
- (((apr_uint32_t *)sa->ipaddr_ptr)[3] & ipsub->mask[0]) == ipsub->sub[0]) {
- return 1;
- }
- }
- else {
- apr_uint32_t *addr = (apr_uint32_t *)sa->ipaddr_ptr;
-
- if ((addr[0] & ipsub->mask[0]) == ipsub->sub[0] &&
- (addr[1] & ipsub->mask[1]) == ipsub->sub[1] &&
- (addr[2] & ipsub->mask[2]) == ipsub->sub[2] &&
- (addr[3] & ipsub->mask[3]) == ipsub->sub[3]) {
- return 1;
- }
- }
-#else
- if ((sa->sa.sin.sin_addr.s_addr & ipsub->mask[0]) == ipsub->sub[0]) {
- return 1;
- }
-#endif /* APR_HAVE_IPV6 */
- return 0; /* no match */
-}
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockaddr.lo b/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockaddr.lo
deleted file mode 100644
index e601fa5e..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockaddr.lo
+++ /dev/null
@@ -1,12 +0,0 @@
-# sockaddr.lo - a libtool object file
-# Generated by ltmain.sh - GNU libtool 1.5.26 (1.1220.2.493 2008/02/01 16:58:18)
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-pic_object='.libs/sockaddr.o'
-
-# Name of the non-PIC object.
-non_pic_object='sockaddr.o'
-
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockaddr.o b/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockaddr.o
deleted file mode 100644
index d4bd43ee..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockaddr.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockets.c b/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockets.c
deleted file mode 100644
index 6510388e..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockets.c
+++ /dev/null
@@ -1,422 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_networkio.h"
-#include "apr_network_io.h"
-#include "apr_strings.h"
-#include "apr_support.h"
-#include "apr_portable.h"
-#include "apr_arch_inherit.h"
-
-#if defined(BEOS) && !defined(BEOS_BONE)
-#define close closesocket
-#endif
-
-static char generic_inaddr_any[16] = {0}; /* big enough for IPv4 or IPv6 */
-
-static apr_status_t socket_cleanup(void *sock)
-{
- apr_socket_t *thesocket = sock;
-
- if (close(thesocket->socketdes) == 0) {
- thesocket->socketdes = -1;
- return APR_SUCCESS;
- }
- else {
- return errno;
- }
-}
-
-static void set_socket_vars(apr_socket_t *sock, int family, int type, int protocol)
-{
- sock->type = type;
- sock->protocol = protocol;
- apr_sockaddr_vars_set(sock->local_addr, family, 0);
- apr_sockaddr_vars_set(sock->remote_addr, family, 0);
- sock->netmask = 0;
-#if defined(BEOS) && !defined(BEOS_BONE)
- /* BeOS pre-BONE has TCP_NODELAY on by default and it can't be
- * switched off!
- */
- sock->netmask |= APR_TCP_NODELAY;
-#endif
-}
-
-static void alloc_socket(apr_socket_t **new, apr_pool_t *p)
-{
- *new = (apr_socket_t *)apr_pcalloc(p, sizeof(apr_socket_t));
- (*new)->cntxt = p;
- (*new)->local_addr = (apr_sockaddr_t *)apr_pcalloc((*new)->cntxt,
- sizeof(apr_sockaddr_t));
- (*new)->local_addr->pool = p;
- (*new)->remote_addr = (apr_sockaddr_t *)apr_pcalloc((*new)->cntxt,
- sizeof(apr_sockaddr_t));
- (*new)->remote_addr->pool = p;
-}
-
-apr_status_t apr_socket_protocol_get(apr_socket_t *sock, int *protocol)
-{
- *protocol = sock->protocol;
- return APR_SUCCESS;
-}
-
-apr_status_t apr_socket_create_ex(apr_socket_t **new, int ofamily, int type,
- int protocol, apr_pool_t *cont)
-{
- int family = ofamily;
-
- if (family == APR_UNSPEC) {
-#if APR_HAVE_IPV6
- family = APR_INET6;
-#else
- family = APR_INET;
-#endif
- }
-
- alloc_socket(new, cont);
-
- (*new)->socketdes = socket(family, type, protocol);
-
-#if APR_HAVE_IPV6
- if ((*new)->socketdes < 0 && ofamily == APR_UNSPEC) {
- family = APR_INET;
- (*new)->socketdes = socket(family, type, protocol);
- }
-#endif
-
- if ((*new)->socketdes < 0) {
- return errno;
- }
- set_socket_vars(*new, family, type, protocol);
-
- (*new)->timeout = -1;
- (*new)->inherit = 0;
- apr_pool_cleanup_register((*new)->cntxt, (void *)(*new), socket_cleanup,
- socket_cleanup);
- return APR_SUCCESS;
-}
-
-apr_status_t apr_socket_create(apr_socket_t **new, int family, int type,
- apr_pool_t *cont)
-{
- return apr_socket_create_ex(new, family, type, 0, cont);
-}
-
-apr_status_t apr_socket_shutdown(apr_socket_t *thesocket,
- apr_shutdown_how_e how)
-{
- return (shutdown(thesocket->socketdes, how) == -1) ? errno : APR_SUCCESS;
-}
-
-apr_status_t apr_socket_close(apr_socket_t *thesocket)
-{
- return apr_pool_cleanup_run(thesocket->cntxt, thesocket, socket_cleanup);
-}
-
-apr_status_t apr_socket_bind(apr_socket_t *sock, apr_sockaddr_t *sa)
-{
- if (bind(sock->socketdes,
- (struct sockaddr *)&sa->sa, sa->salen) == -1) {
- return errno;
- }
- else {
- sock->local_addr = sa;
- /* XXX IPv6 - this assumes sin_port and sin6_port at same offset */
- if (sock->local_addr->sa.sin.sin_port == 0) { /* no need for ntohs() when comparing w/ 0 */
- sock->local_port_unknown = 1; /* kernel got us an ephemeral port */
- }
- return APR_SUCCESS;
- }
-}
-
-apr_status_t apr_socket_listen(apr_socket_t *sock, apr_int32_t backlog)
-{
- if (listen(sock->socketdes, backlog) == -1)
- return errno;
- else
- return APR_SUCCESS;
-}
-
-apr_status_t apr_socket_accept(apr_socket_t **new, apr_socket_t *sock,
- apr_pool_t *connection_context)
-{
- alloc_socket(new, connection_context);
- set_socket_vars(*new, sock->local_addr->sa.sin.sin_family, SOCK_STREAM, sock->protocol);
-
-#ifndef HAVE_POLL
- (*new)->connected = 1;
-#endif
- (*new)->timeout = -1;
-
- (*new)->socketdes = accept(sock->socketdes,
- (struct sockaddr *)&(*new)->remote_addr->sa,
- &(*new)->remote_addr->salen);
-
- if ((*new)->socketdes < 0) {
- return errno;
- }
-#ifdef TPF
- if ((*new)->socketdes == 0) {
- /* 0 is an invalid socket for TPF */
- return APR_EINTR;
- }
-#endif
-
- *(*new)->local_addr = *sock->local_addr;
-
- /* The above assignment just overwrote the pool entry. Setting the local_addr
- pool for the accepted socket back to what it should be. Otherwise all
- allocations for this socket will come from a server pool that is not
- freed until the process goes down.*/
- (*new)->local_addr->pool = connection_context;
-
- /* fix up any pointers which are no longer valid */
- if (sock->local_addr->sa.sin.sin_family == AF_INET) {
- (*new)->local_addr->ipaddr_ptr = &(*new)->local_addr->sa.sin.sin_addr;
- }
-#if APR_HAVE_IPV6
- else if (sock->local_addr->sa.sin.sin_family == AF_INET6) {
- (*new)->local_addr->ipaddr_ptr = &(*new)->local_addr->sa.sin6.sin6_addr;
- }
-#endif
- (*new)->remote_addr->port = ntohs((*new)->remote_addr->sa.sin.sin_port);
- if (sock->local_port_unknown) {
- /* not likely for a listening socket, but theoretically possible :) */
- (*new)->local_port_unknown = 1;
- }
-
-#if APR_TCP_NODELAY_INHERITED
- if (apr_is_option_set(sock->netmask, APR_TCP_NODELAY) == 1) {
- apr_set_option(&(*new)->netmask, APR_TCP_NODELAY, 1);
- }
-#endif /* TCP_NODELAY_INHERITED */
-#if APR_O_NONBLOCK_INHERITED
- if (apr_is_option_set(sock->netmask, APR_SO_NONBLOCK) == 1) {
- apr_set_option(&(*new)->netmask, APR_SO_NONBLOCK, 1);
- }
-#endif /* APR_O_NONBLOCK_INHERITED */
-
- if (sock->local_interface_unknown ||
- !memcmp(sock->local_addr->ipaddr_ptr,
- generic_inaddr_any,
- sock->local_addr->ipaddr_len)) {
- /* If the interface address inside the listening socket's local_addr wasn't
- * up-to-date, we don't know local interface of the connected socket either.
- *
- * If the listening socket was not bound to a specific interface, we
- * don't know the local_addr of the connected socket.
- */
- (*new)->local_interface_unknown = 1;
- }
-
- (*new)->inherit = 0;
- apr_pool_cleanup_register((*new)->cntxt, (void *)(*new), socket_cleanup,
- socket_cleanup);
- return APR_SUCCESS;
-}
-
-apr_status_t apr_socket_connect(apr_socket_t *sock, apr_sockaddr_t *sa)
-{
- int rc;
-
- do {
- rc = connect(sock->socketdes,
- (const struct sockaddr *)&sa->sa.sin,
- sa->salen);
- } while (rc == -1 && errno == EINTR);
-
- /* we can see EINPROGRESS the first time connect is called on a non-blocking
- * socket; if called again, we can see EALREADY
- */
- if (rc == -1 && (errno == EINPROGRESS || errno == EALREADY) &&
- apr_is_option_set(sock->netmask, APR_SO_TIMEOUT)) {
- rc = apr_wait_for_io_or_timeout(NULL, sock, 0);
- if (rc != APR_SUCCESS) {
- return rc;
- }
-
-#ifdef SO_ERROR
- {
- int error;
- apr_socklen_t len = sizeof(error);
- if ((rc = getsockopt(sock->socketdes, SOL_SOCKET, SO_ERROR,
- (char *)&error, &len)) < 0) {
- return errno;
- }
- if (error) {
- return error;
- }
- }
-#endif /* SO_ERROR */
- }
-
- if (rc == -1 && errno != EISCONN) {
- return errno;
- }
-
- sock->remote_addr = sa;
- if (sock->local_addr->port == 0) {
- /* connect() got us an ephemeral port */
- sock->local_port_unknown = 1;
- }
- if (!memcmp(sock->local_addr->ipaddr_ptr,
- generic_inaddr_any,
- sock->local_addr->ipaddr_len)) {
- /* not bound to specific local interface; connect() had to assign
- * one for the socket
- */
- sock->local_interface_unknown = 1;
- }
-#ifndef HAVE_POLL
- sock->connected=1;
-#endif
- return APR_SUCCESS;
-}
-
-apr_status_t apr_socket_data_get(void **data, const char *key, apr_socket_t *sock)
-{
- sock_userdata_t *cur = sock->userdata;
-
- *data = NULL;
-
- while (cur) {
- if (!strcmp(cur->key, key)) {
- *data = cur->data;
- break;
- }
- cur = cur->next;
- }
-
- return APR_SUCCESS;
-}
-
-apr_status_t apr_socket_data_set(apr_socket_t *sock, void *data, const char *key,
- apr_status_t (*cleanup) (void *))
-{
- sock_userdata_t *new = apr_palloc(sock->cntxt, sizeof(sock_userdata_t));
-
- new->key = apr_pstrdup(sock->cntxt, key);
- new->data = data;
- new->next = sock->userdata;
- sock->userdata = new;
-
- if (cleanup) {
- apr_pool_cleanup_register(sock->cntxt, data, cleanup, cleanup);
- }
-
- return APR_SUCCESS;
-}
-
-apr_status_t apr_os_sock_get(apr_os_sock_t *thesock, apr_socket_t *sock)
-{
- *thesock = sock->socketdes;
- return APR_SUCCESS;
-}
-
-apr_status_t apr_os_sock_make(apr_socket_t **apr_sock,
- apr_os_sock_info_t *os_sock_info,
- apr_pool_t *cont)
-{
- alloc_socket(apr_sock, cont);
-#ifdef APR_ENABLE_FOR_1_0 /* no protocol field yet */
- set_socket_vars(*apr_sock, os_sock_info->family, os_sock_info->type, os_sock_info->protocol);
-#else
- set_socket_vars(*apr_sock, os_sock_info->family, os_sock_info->type, 0);
-#endif
- (*apr_sock)->timeout = -1;
- (*apr_sock)->socketdes = *os_sock_info->os_sock;
- if (os_sock_info->local) {
- memcpy(&(*apr_sock)->local_addr->sa.sin,
- os_sock_info->local,
- (*apr_sock)->local_addr->salen);
- /* XXX IPv6 - this assumes sin_port and sin6_port at same offset */
- (*apr_sock)->local_addr->port = ntohs((*apr_sock)->local_addr->sa.sin.sin_port);
- }
- else {
- (*apr_sock)->local_port_unknown = (*apr_sock)->local_interface_unknown = 1;
- }
- if (os_sock_info->remote) {
-#ifndef HAVE_POLL
- (*apr_sock)->connected = 1;
-#endif
- memcpy(&(*apr_sock)->remote_addr->sa.sin,
- os_sock_info->remote,
- (*apr_sock)->remote_addr->salen);
- /* XXX IPv6 - this assumes sin_port and sin6_port at same offset */
- (*apr_sock)->remote_addr->port = ntohs((*apr_sock)->remote_addr->sa.sin.sin_port);
- }
- else {
- (*apr_sock)->remote_addr_unknown = 1;
- }
-
- (*apr_sock)->inherit = 0;
- apr_pool_cleanup_register((*apr_sock)->cntxt, (void *)(*apr_sock),
- socket_cleanup, socket_cleanup);
- return APR_SUCCESS;
-}
-
-apr_status_t apr_os_sock_put(apr_socket_t **sock, apr_os_sock_t *thesock,
- apr_pool_t *cont)
-{
- /* XXX Bogus assumption that *sock points at anything legit */
- if ((*sock) == NULL) {
- alloc_socket(sock, cont);
- /* XXX IPv6 figure out the family here! */
- /* XXX figure out the actual socket type here */
- /* *or* just decide that apr_os_sock_put() has to be told the family and type */
- set_socket_vars(*sock, APR_INET, SOCK_STREAM, 0);
- (*sock)->timeout = -1;
- }
- (*sock)->local_port_unknown = (*sock)->local_interface_unknown = 1;
- (*sock)->remote_addr_unknown = 1;
- (*sock)->socketdes = *thesock;
- return APR_SUCCESS;
-}
-
-APR_IMPLEMENT_INHERIT_SET(socket, inherit, cntxt, socket_cleanup)
-
-APR_IMPLEMENT_INHERIT_UNSET(socket, inherit, cntxt, socket_cleanup)
-
-/* deprecated */
-apr_status_t apr_shutdown(apr_socket_t *thesocket, apr_shutdown_how_e how)
-{
- return apr_socket_shutdown(thesocket, how);
-}
-
-/* deprecated */
-apr_status_t apr_bind(apr_socket_t *sock, apr_sockaddr_t *sa)
-{
- return apr_socket_bind(sock, sa);
-}
-
-/* deprecated */
-apr_status_t apr_listen(apr_socket_t *sock, apr_int32_t backlog)
-{
- return apr_socket_listen(sock, backlog);
-}
-
-/* deprecated */
-apr_status_t apr_accept(apr_socket_t **new, apr_socket_t *sock,
- apr_pool_t *connection_context)
-{
- return apr_socket_accept(new, sock, connection_context);
-}
-
-/* deprecated */
-apr_status_t apr_connect(apr_socket_t *sock, apr_sockaddr_t *sa)
-{
- return apr_socket_connect(sock, sa);
-}
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockets.lo b/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockets.lo
deleted file mode 100644
index 02c9a22e..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockets.lo
+++ /dev/null
@@ -1,12 +0,0 @@
-# sockets.lo - a libtool object file
-# Generated by ltmain.sh - GNU libtool 1.5.26 (1.1220.2.493 2008/02/01 16:58:18)
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-pic_object='.libs/sockets.o'
-
-# Name of the non-PIC object.
-non_pic_object='sockets.o'
-
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockets.o b/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockets.o
deleted file mode 100644
index c4cc3fb7..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockets.o
+++ /dev/null
Binary files differ
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockopt.c b/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockopt.c
deleted file mode 100644
index 039fda08..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockopt.c
+++ /dev/null
@@ -1,393 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include "apr_arch_networkio.h"
-#include "apr_strings.h"
-
-
-static apr_status_t soblock(int sd)
-{
-/* BeOS uses setsockopt at present for non blocking... */
-#ifndef BEOS
- int fd_flags;
-
- fd_flags = fcntl(sd, F_GETFL, 0);
-#if defined(O_NONBLOCK)
- fd_flags &= ~O_NONBLOCK;
-#elif defined(O_NDELAY)
- fd_flags &= ~O_NDELAY;
-#elif defined(FNDELAY)
- fd_flags &= ~FNDELAY;
-#else
-#error Please teach APR how to make sockets blocking on your platform.
-#endif
- if (fcntl(sd, F_SETFL, fd_flags) == -1) {
- return errno;
- }
-#else
- int on = 0;
- if (setsockopt(sd, SOL_SOCKET, SO_NONBLOCK, &on, sizeof(int)) < 0)
- return errno;
-#endif /* BEOS */
- return APR_SUCCESS;
-}
-
-static apr_status_t sononblock(int sd)
-{
-#ifndef BEOS
- int fd_flags;
-
- fd_flags = fcntl(sd, F_GETFL, 0);
-#if defined(O_NONBLOCK)
- fd_flags |= O_NONBLOCK;
-#elif defined(O_NDELAY)
- fd_flags |= O_NDELAY;
-#elif defined(FNDELAY)
- fd_flags |= FNDELAY;
-#else
-#error Please teach APR how to make sockets non-blocking on your platform.
-#endif
- if (fcntl(sd, F_SETFL, fd_flags) == -1) {
- return errno;
- }
-#else
- int on = 1;
- if (setsockopt(sd, SOL_SOCKET, SO_NONBLOCK, &on, sizeof(int)) < 0)
- return errno;
-#endif /* BEOS */
- return APR_SUCCESS;
-}
-
-
-apr_status_t apr_socket_timeout_set(apr_socket_t *sock, apr_interval_time_t t)
-{
- apr_status_t stat;
-
- /* If our timeout is positive or zero and our last timeout was
- * negative, then we need to ensure that we are non-blocking.
- * Conversely, if our timeout is negative and we had a positive
- * or zero timeout, we must make sure our socket is blocking.
- * We want to avoid calling fcntl more than necessary on the socket,
- */
- if (t >= 0 && sock->timeout < 0) {
- if (apr_is_option_set(sock->netmask, APR_SO_NONBLOCK) != 1) {
- if ((stat = sononblock(sock->socketdes)) != APR_SUCCESS) {
- return stat;
- }
- apr_set_option(&sock->netmask, APR_SO_NONBLOCK, 1);
- }
- }
- else if (t < 0 && sock->timeout >= 0) {
- if (apr_is_option_set(sock->netmask, APR_SO_NONBLOCK) != 0) {
- if ((stat = soblock(sock->socketdes)) != APR_SUCCESS) {
- return stat;
- }
- apr_set_option(&sock->netmask, APR_SO_NONBLOCK, 0);
- }
- }
- /* must disable the incomplete read support if we disable
- * a timeout
- */
- if (t <= 0) {
- sock->netmask &= ~APR_INCOMPLETE_READ;
- }
- sock->timeout = t;
- apr_set_option(&sock->netmask, APR_SO_TIMEOUT, t > 0);
- return APR_SUCCESS;
-}
-
-
-apr_status_t apr_socket_opt_set(apr_socket_t *sock,
- apr_int32_t opt, apr_int32_t on)
-{
- int one;
- apr_status_t rv;
-
- if (on)
- one = 1;
- else
- one = 0;
- switch(opt) {
- case APR_SO_KEEPALIVE:
-#ifdef SO_KEEPALIVE
- if (on != apr_is_option_set(sock->netmask, APR_SO_KEEPALIVE)) {
- if (setsockopt(sock->socketdes, SOL_SOCKET, SO_KEEPALIVE, (void *)&one, sizeof(int)) == -1) {
- return errno;
- }
- apr_set_option(&sock->netmask,APR_SO_KEEPALIVE, on);
- }
-#else
- return APR_ENOTIMPL;
-#endif
- break;
- case APR_SO_DEBUG:
- if (on != apr_is_option_set(sock->netmask, APR_SO_DEBUG)) {
- if (setsockopt(sock->socketdes, SOL_SOCKET, SO_DEBUG, (void *)&one, sizeof(int)) == -1) {
- return errno;
- }
- apr_set_option(&sock->netmask, APR_SO_DEBUG, on);
- }
- break;
- case APR_SO_REUSEADDR:
- if (on != apr_is_option_set(sock->netmask, APR_SO_REUSEADDR)) {
- if (setsockopt(sock->socketdes, SOL_SOCKET, SO_REUSEADDR, (void *)&one, sizeof(int)) == -1) {
- return errno;
- }
- apr_set_option(&sock->netmask, APR_SO_REUSEADDR, on);
- }
- break;
- case APR_SO_SNDBUF:
-#ifdef SO_SNDBUF
- if (setsockopt(sock->socketdes, SOL_SOCKET, SO_SNDBUF, (void *)&on, sizeof(int)) == -1) {
- return errno;
- }
-#else
- return APR_ENOTIMPL;
-#endif
- break;
- case APR_SO_RCVBUF:
-#ifdef SO_RCVBUF
- if (setsockopt(sock->socketdes, SOL_SOCKET, SO_RCVBUF, (void *)&on, sizeof(int)) == -1) {
- return errno;
- }
-#else
- return APR_ENOTIMPL;
-#endif
- break;
- case APR_SO_NONBLOCK:
- if (apr_is_option_set(sock->netmask, APR_SO_NONBLOCK) != on) {
- if (on) {
- if ((rv = sononblock(sock->socketdes)) != APR_SUCCESS)
- return rv;
- }
- else {
- if ((rv = soblock(sock->socketdes)) != APR_SUCCESS)
- return rv;
- }
- apr_set_option(&sock->netmask, APR_SO_NONBLOCK, on);
- }
- break;
- case APR_SO_LINGER:
-#ifdef SO_LINGER
- if (apr_is_option_set(sock->netmask, APR_SO_LINGER) != on) {
- struct linger li;
- li.l_onoff = on;
- li.l_linger = APR_MAX_SECS_TO_LINGER;
- if (setsockopt(sock->socketdes, SOL_SOCKET, SO_LINGER, (char *) &li, sizeof(struct linger)) == -1) {
- return errno;
- }
- apr_set_option(&sock->netmask, APR_SO_LINGER, on);
- }
-#else
- return APR_ENOTIMPL;
-#endif
- break;
- case APR_SO_TIMEOUT:
- /* XXX: To be deprecated */
- return apr_socket_timeout_set(sock, on);
- break;
- case APR_TCP_NODELAY:
-#if defined(TCP_NODELAY)
- if (apr_is_option_set(sock->netmask, APR_TCP_NODELAY) != on) {
- int optlevel = IPPROTO_TCP;
- int optname = TCP_NODELAY;
-
-#if APR_HAVE_SCTP
- if (sock->protocol == IPPROTO_SCTP) {
- optlevel = IPPROTO_SCTP;
- optname = SCTP_NODELAY;
- }
-#endif
- if (setsockopt(sock->socketdes, optlevel, optname, (void *)&on, sizeof(int)) == -1) {
- return errno;
- }
- apr_set_option(&sock->netmask, APR_TCP_NODELAY, on);
- }
-#else
- /* BeOS pre-BONE has TCP_NODELAY set by default.
- * As it can't be turned off we might as well check if they're asking
- * for it to be turned on!
- */
-#ifdef BEOS
- if (on == 1)
- return APR_SUCCESS;
- else
-#endif
- return APR_ENOTIMPL;
-#endif
- break;
- case APR_TCP_NOPUSH:
-#if APR_TCP_NOPUSH_FLAG
- if (apr_is_option_set(sock->netmask, APR_TCP_NOPUSH) != on) {
- int optlevel = IPPROTO_TCP;
- int optname = TCP_NODELAY;
-
-#if APR_HAVE_SCTP
- if (sock->protocol == IPPROTO_SCTP) {
- optlevel = IPPROTO_SCTP;
- optname = SCTP_NODELAY;
- }
-#endif
- /* OK we're going to change some settings here... */
- /* TCP_NODELAY is mutually exclusive, so do we have it set? */
- if (apr_is_option_set(sock->netmask, APR_TCP_NODELAY) == 1 && on) {
- /* If we want to set NOPUSH then if we have the TCP_NODELAY
- * flag set we need to switch it off...
- */
- int tmpflag = 0;
- if (setsockopt(sock->socketdes, optlevel, optname,
- (void*)&tmpflag, sizeof(int)) == -1) {
- return errno;
- }
- apr_set_option(&sock->netmask, APR_RESET_NODELAY, 1);
- apr_set_option(&sock->netmask, APR_TCP_NODELAY, 0);
- } else if (on) {
- apr_set_option(&sock->netmask, APR_RESET_NODELAY, 0);
- }
- /* OK, now we can just set the TCP_NOPUSH flag accordingly...*/
- if (setsockopt(sock->socketdes, IPPROTO_TCP, APR_TCP_NOPUSH_FLAG,
- (void*)&on, sizeof(int)) == -1) {
- return errno;
- }
- apr_set_option(&sock->netmask, APR_TCP_NOPUSH, on);
- if (!on && apr_is_option_set(sock->netmask, APR_RESET_NODELAY)) {
- int tmpflag = 1;
- if (setsockopt(sock->socketdes, optlevel, optname,
- (void*)&tmpflag, sizeof(int)) == -1) {
- return errno;
- }
- apr_set_option(&sock->netmask, APR_RESET_NODELAY,0);
- apr_set_option(&sock->netmask, APR_TCP_NODELAY, 1);
- }
- }
-#else
- return APR_ENOTIMPL;
-#endif
- break;
- case APR_INCOMPLETE_READ:
- apr_set_option(&sock->netmask, APR_INCOMPLETE_READ, on);
- break;
- case APR_IPV6_V6ONLY:
-#if APR_HAVE_IPV6 && defined(IPV6_V6ONLY)
- /* we don't know the initial setting of this option,
- * so don't check sock->netmask since that optimization
- * won't work
- */
- if (setsockopt(sock->socketdes, IPPROTO_IPV6, IPV6_V6ONLY,
- (void *)&on, sizeof(int)) == -1) {
- return errno;
- }
- apr_set_option(&sock->netmask, APR_IPV6_V6ONLY, on);
-#else
- return APR_ENOTIMPL;
-#endif
- break;
- default:
- return APR_EINVAL;
- }
-
- return APR_SUCCESS;
-}
-
-
-apr_status_t apr_socket_timeout_get(apr_socket_t *sock, apr_interval_time_t *t)
-{
- *t = sock->timeout;
- return APR_SUCCESS;
-}
-
-
-apr_status_t apr_socket_opt_get(apr_socket_t *sock,
- apr_int32_t opt, apr_int32_t *on)
-{
- switch(opt) {
- case APR_SO_TIMEOUT:
- /* XXX: To be deprecated */
- *on = (apr_int32_t)sock->timeout;
- break;
- default:
- *on = apr_is_option_set(sock->netmask, opt);
- }
- return APR_SUCCESS;
-}
-
-
-apr_status_t apr_socket_atmark(apr_socket_t *sock, int *atmark)
-{
-/* In 1.0 we rely on compile failure to assure all platforms grabbed
- * the correct header file support for SIOCATMARK, but we don't want
- * to fail the build of 0.9. Keep things good for the released branch.
- */
-#ifdef SIOCATMARK
- int oobmark;
-
- if (ioctl(sock->socketdes, SIOCATMARK, (void*) &oobmark) < 0)
- return apr_get_netos_error();
-
- *atmark = (oobmark != 0);
-
- return APR_SUCCESS;
-#else
- return APR_ENOTIMPL;
-#endif
-}
-
-
-/* deprecated */
-apr_status_t apr_setsocketopt(apr_socket_t *sock,
- apr_int32_t opt, apr_int32_t on)
-{
- return apr_socket_opt_set(sock, opt, on);
-}
-
-apr_status_t apr_getsocketopt(apr_socket_t *sock,
- apr_int32_t opt, apr_int32_t *on)
-{
- return apr_socket_opt_get(sock, opt, on);
-}
-
-
-apr_status_t apr_gethostname(char *buf, apr_int32_t len, apr_pool_t *cont)
-{
- if (gethostname(buf, len) == -1) {
- buf[0] = '\0';
- return errno;
- }
- else if (!memchr(buf, '\0', len)) { /* buffer too small */
- /* note... most platforms just truncate in this condition
- * linux+glibc return an error
- */
- buf[0] = '\0';
- return APR_ENAMETOOLONG;
- }
- return APR_SUCCESS;
-}
-
-#if APR_HAS_SO_ACCEPTFILTER
-apr_status_t apr_socket_accept_filter(apr_socket_t *sock, char *name,
- char *args)
-{
- struct accept_filter_arg af;
- strncpy(af.af_name, name, 16);
- strncpy(af.af_arg, args, 256 - 16);
-
- if ((setsockopt(sock->socketdes, SOL_SOCKET, SO_ACCEPTFILTER,
- &af, sizeof(af))) < 0) {
- return errno;
- }
- return APR_SUCCESS;
-}
-#endif
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockopt.lo b/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockopt.lo
deleted file mode 100644
index e61510cc..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockopt.lo
+++ /dev/null
@@ -1,12 +0,0 @@
-# sockopt.lo - a libtool object file
-# Generated by ltmain.sh - GNU libtool 1.5.26 (1.1220.2.493 2008/02/01 16:58:18)
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-pic_object='.libs/sockopt.o'
-
-# Name of the non-PIC object.
-non_pic_object='sockopt.o'
-
diff --git a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockopt.o b/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockopt.o
deleted file mode 100644
index cc6db787..00000000
--- a/rubbos/app/httpd-2.0.64/srclib/apr/network_io/unix/sockopt.o
+++ /dev/null
Binary files differ