diff options
author | https://www.google.com/accounts/o8/id?id=AItOawkzwmw_zyMpZC9_J7ey--woeYPoZkAOgGw <dxtrish@web> | 2014-02-08 19:16:54 +0000 |
---|---|---|
committer | admin <admin@branchable.com> | 2014-02-08 19:16:54 +0000 |
commit | bace2ff565b29c30fa3d9fbf83e459291c8ad28a (patch) | |
tree | aff87faf9b8c17e99f1771563448b55abaff20e3 /doc/bugs/More_build_oddities_under_OpenBSD | |
parent | ac0210727d5026c1501e3c12cb2b9458c9f87349 (diff) |
removed
Diffstat (limited to 'doc/bugs/More_build_oddities_under_OpenBSD')
-rw-r--r-- | doc/bugs/More_build_oddities_under_OpenBSD/comment_11_e2c19aca7877cec7b956dae104ebc394._comment | 95 |
1 files changed, 0 insertions, 95 deletions
diff --git a/doc/bugs/More_build_oddities_under_OpenBSD/comment_11_e2c19aca7877cec7b956dae104ebc394._comment b/doc/bugs/More_build_oddities_under_OpenBSD/comment_11_e2c19aca7877cec7b956dae104ebc394._comment deleted file mode 100644 index b0b68fa4d..000000000 --- a/doc/bugs/More_build_oddities_under_OpenBSD/comment_11_e2c19aca7877cec7b956dae104ebc394._comment +++ /dev/null @@ -1,95 +0,0 @@ -[[!comment format=mdwn - username="https://www.google.com/accounts/o8/id?id=AItOawkzwmw_zyMpZC9_J7ey--woeYPoZkAOgGw" - nickname="dxtrish" - subject="comment 11" - date="2014-02-08T19:16:24Z" - content=""" -I honestly have no idea why that move works because - - % ls -lh /usr/lib|grep -E '(gsasl|xml2|gnutls|idn)' - -returns nothing. But couldn't those symbols already be in the other libraries considering, from what I've read at least, haskell stuff are statically compiled by default? - -Anyway, you are completely right that this happened when I try to use XMPP. The reason I was looking in the wrong place to begin with was because the webapp spit out the error messsage. I have redirected my attention to the network library and the xmpp library. - -But I might have found something interesting in the network library. Keep in mind that I just learned a little today, so do correct me if I'm wrong. - -Looking at http://hackage.haskell.org/package/network-2.2.1.8/docs/src/Network-Socket.html I found: - setSocketOption :: Socket - -> SocketOption -- Option Name - -> Int -- Option Value - -> IO () - setSocketOption (MkSocket s _ _ _ _) so v = do - with (fromIntegral v) $ \ptr_v -> do - throwErrnoIfMinus1_ \"setSocketOption\" $ - c_setsockopt s (socketOptLevel so) (packSocketOption so) ptr_v - (fromIntegral (sizeOf v)) - return () - -Everything here looks good. So I decided to take a look at SocketOption, socketOptLevel and packSocketOption. - data SocketOption - = DummySocketOption__ - | Debug {- SO_DEBUG -} - | ReuseAddr {- SO_REUSEADDR -} - | Type {- SO_TYPE -} - | SoError {- SO_ERROR -} - | DontRoute {- SO_DONTROUTE -} - | Broadcast {- SO_BROADCAST -} - | SendBuffer {- SO_SNDBUF -} - | RecvBuffer {- SO_RCVBUF -} - | KeepAlive {- SO_KEEPALIVE -} - | OOBInline {- SO_OOBINLINE -} - | TimeToLive {- IP_TTL -} - | MaxSegment {- TCP_MAXSEG -} - | NoDelay {- TCP_NODELAY -} - | Linger {- SO_LINGER -} - | RecvLowWater {- SO_RCVLOWAT -} - | SendLowWater {- SO_SNDLOWAT -} - | RecvTimeOut {- SO_RCVTIMEO -} - | SendTimeOut {- SO_SNDTIMEO -} - - socketOptLevel :: SocketOption -> CInt - socketOptLevel so = - case so of - TimeToLive -> 0 - MaxSegment -> 6 - NoDelay -> 6 - _ -> 1 - - packSocketOption :: SocketOption -> CInt - packSocketOption so = - case so of - Debug -> 1 - ReuseAddr -> 2 - Type -> 3 - SoError -> 4 - DontRoute -> 5 - Broadcast -> 6 - SendBuffer -> 7 - RecvBuffer -> 8 - KeepAlive -> 9 - OOBInline -> 10 - TimeToLive -> 2 - MaxSegment -> 2 - NoDelay -> 1 - Linger -> 13 - RecvLowWater -> 18 - SendLowWater -> 19 - RecvTimeOut -> 20 - SendTimeOut -> 21 - -Everything looks good so I thought long and hard about this. Then, by chance, I just looked at the man page for setsockopt() and it mentioned SOL_SOCKET and I was like \"Hmm...\" - - % grep -R SOL_SOCKET /usr/include - /usr/include/openssl/e_os.h:#define ioctlsocket(a,b,c) setsockopt((a),SOL_SOCKET,(b),(c),sizeof(*(c))) - /usr/include/sys/socket.h:#define SOL_SOCKET 0xffff /* options for socket level */ - /usr/include/sys/socket.h:/* Read using getsockopt() with SOL_SOCKET, SO_PEERCRED */ - -Wat? - - #define SOL_SOCKET 0xffff - -Going back to the Haskell code above I realized that SetSocketOption will NEVER feed 0xffff as level to setsockopt() because socketOptLevel returns 1 unless optname is TimeToLive, MaxSegment or NoDelay. - -Am I way off? -"""]] |