On 26 June 2004 02:48, Glynn Clements wrote:

> You can't set the send/receive timeouts using that function; it always
> passes a C int (with the optlen parameter set to sizeof(int)). You
> would have to re-write it with a more flexible interface, e.g.:
> 
>> import Foreign
>> import Foreign.C
>> import Network.Socket hiding (setSocketOption)
>> 
>> foreign import CALLCONV unsafe "setsockopt"
>>   c_setsockopt :: CInt -> CInt -> CInt -> Ptr () -> CInt -> IO CInt
>> 
>> setSocketOption :: (Storable a) => Socket
>>              -> SocketOption -- Option Name
>>              -> a            -- Option Value
>>              -> IO ()
>> setSocketOption (MkSocket s _ _ _ _) so v = do
>>    with v $ \ptr_v -> do
>>    throwErrnoIfMinus1_ "setSocketOption" $
>>        c_setsockopt s (socketOptLevel so) (packSocketOption so)
>>    (castPtr ptr_v)     (fromIntegral (sizeOf v)) return ()

I'm tempted to replace the current setSocketOption with this version.
Would anyone object?  Or perhaps we should include the new version under
a different name?

Cheers,
        Simon
_______________________________________________
Glasgow-haskell-users mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to