summaryrefslogtreecommitdiff
path: root/network_io
diff options
context:
space:
mode:
authorbnicholes <bnicholes@13f79535-47bb-0310-9956-ffa450edef68>2001-08-09 23:26:18 +0000
committerbnicholes <bnicholes@13f79535-47bb-0310-9956-ffa450edef68>2001-08-09 23:26:18 +0000
commit2b954aedc27284d39a9298620bd7f7cd9d4bbcd0 (patch)
tree934d21ccec13ac66f610967ce284786469af8856 /network_io
parentaab117ad43db0374b474cceff9fad3b0a0e886d0 (diff)
downloadlibapr-2b954aedc27284d39a9298620bd7f7cd9d4bbcd0.tar.gz
Implemented apr_getsocketopt() for NetWare
git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@62136 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'network_io')
-rw-r--r--network_io/win32/sockopt.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/network_io/win32/sockopt.c b/network_io/win32/sockopt.c
index 40fab71a9..87000b260 100644
--- a/network_io/win32/sockopt.c
+++ b/network_io/win32/sockopt.c
@@ -173,6 +173,41 @@ APR_DECLARE(apr_status_t) apr_setsocketopt(apr_socket_t *sock,
APR_DECLARE(apr_status_t) apr_getsocketopt(apr_socket_t *sock,
apr_int32_t opt, apr_int32_t *on)
{
+#ifdef NETWARE
+ int sol_opt = 0;
+
+ switch (opt) {
+ case APR_SO_TIMEOUT:
+ /* Convert from milliseconds (windows units) to microseconds
+ * (APR units) */
+ *on = (apr_int32_t)(sock->timeout * 1000);
+ break;
+ case APR_SO_DISCONNECTED:
+ *on = sock->disconnected;
+ break;
+ case APR_SO_KEEPALIVE:
+ sol_opt = SO_KEEPALIVE;
+ break;
+ case APR_SO_DEBUG:
+ sol_opt = SO_DEBUG;
+ break;
+ case APR_SO_REUSEADDR:
+ sol_opt = SO_REUSEADDR;
+ break;
+ case APR_SO_NONBLOCK:
+ case APR_SO_LINGER:
+ default:
+ return APR_ENOTIMPL;
+ break;
+ }
+ if (sol_opt) {
+ int sz = sizeof(apr_int32_t);
+
+ if (getsockopt(sock->sock, SOL_SOCKET, sol_opt, (char *)on, &sz) == -1) {
+ return apr_get_netos_error();
+ }
+ }
+#else
switch (opt) {
case APR_SO_TIMEOUT:
/* Convert from milliseconds (windows units) to microseconds
@@ -191,6 +226,7 @@ APR_DECLARE(apr_status_t) apr_getsocketopt(apr_socket_t *sock,
return APR_ENOTIMPL;
break;
}
+#endif
return APR_SUCCESS;
}