summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar https://www.google.com/accounts/o8/id?id=AItOawkzwmw_zyMpZC9_J7ey--woeYPoZkAOgGw <dxtrish@web>2014-02-08 19:16:54 +0000
committerGravatar admin <admin@branchable.com>2014-02-08 19:16:54 +0000
commitbace2ff565b29c30fa3d9fbf83e459291c8ad28a (patch)
treeaff87faf9b8c17e99f1771563448b55abaff20e3
parentac0210727d5026c1501e3c12cb2b9458c9f87349 (diff)
removed
-rw-r--r--doc/bugs/More_build_oddities_under_OpenBSD/comment_11_e2c19aca7877cec7b956dae104ebc394._comment95
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?
-"""]]