diff options
author | simonmar <unknown> | 1999-09-20 10:18:30 +0000 |
---|---|---|
committer | simonmar <unknown> | 1999-09-20 10:18:30 +0000 |
commit | d82f41425562849cb77653bb690d2279e7a85586 (patch) | |
tree | 61ecaa1d28356c23c40a54d69430ea9355306250 /ghc/lib/misc/cbits/socketOpt.c | |
parent | 6b7c06e0715663168ed35ef00084e07e03cdd28b (diff) | |
download | haskell-d82f41425562849cb77653bb690d2279e7a85586.tar.gz |
[project @ 1999-09-20 10:18:29 by simonmar]
- fix bug in setSocketOption__ which meant that trying to set
SO_REUSEADDR on Linux (and possibly other OS's) didn't work.
- add rudimentary non-blocking connect support.
Diffstat (limited to 'ghc/lib/misc/cbits/socketOpt.c')
-rw-r--r-- | ghc/lib/misc/cbits/socketOpt.c | 33 |
1 files changed, 4 insertions, 29 deletions
diff --git a/ghc/lib/misc/cbits/socketOpt.c b/ghc/lib/misc/cbits/socketOpt.c index 69e1fa1214..21ce7a2d23 100644 --- a/ghc/lib/misc/cbits/socketOpt.c +++ b/ghc/lib/misc/cbits/socketOpt.c @@ -13,21 +13,9 @@ #include "stgio.h" StgInt -getSocketOption__ (fd, opt) -StgInt fd; -StgInt opt; +getSocketOption__ (StgInt fd, StgInt opt, StgInt level) { - int level,optval, sz_optval,rc; - - if ( -#ifndef _WIN32 - opt == TCP_MAXSEG || -#endif - opt == TCP_NODELAY ) { - level = IPPROTO_TCP; - } else { - level = SOL_SOCKET; - } + int optval, sz_optval, rc; sz_optval = sizeof(int); @@ -42,23 +30,10 @@ StgInt opt; } StgInt -setSocketOption__ (fd, opt, val) -StgInt fd; -StgInt opt; -StgInt val; +setSocketOption__ (StgInt fd, StgInt opt, StgInt level, StgInt val) { - int level, optval,rc; + int optval, rc; - if ( -#ifndef _WIN32 - opt == TCP_MAXSEG || -#endif - opt == TCP_NODELAY ) { - level = IPPROTO_TCP; - } else { - level = SOL_SOCKET; - } - optval = val; while ( (rc = setsockopt((int)fd, level, opt, &optval, sizeof(optval))) < 0 ) { |