Should be fixed in 0.2.3.  Let me know.

Jim
        
On Jun 14, 2013, at 3:24 PM, Jim Ursetto <zbignie...@gmail.com> wrote:

> Hi,
> 
> It's a bug in the socket egg; nonblocking mode is only set during a 
> socket-connect or socket-accept, which won't be called for UDP.
> 
> Temporary workaround: (use posix) and then, after creating the socket, do 
> either:
> 
> (##sys#file-nonblocking! (socket-fileno *socket*))
> 
> or equivalently
> 
> (file-control fcntl/setfl (socket-fileno *socket*)
>  (bitwise-ior (file-control fcntl/getfl (socket-fileno *socket*))
>               open/nonblock))
> 
> Neither workaround will work on Windows.
> 
> Permanent fix: We should probably make all sockets nonblocking at creation 
> time instead, since our machinery assumes nonblocking sockets.  We could 
> expose the set-nonblocking operation to the user, but since TCP is always 
> nonblocking, doing this only for UDP would be strange.  Thoughts?
> 
> Jim
> 
> On Jun 14, 2013, at 11:01 AM, Kristian Lein-Mathisen <kristianl...@gmail.com> 
> wrote:
> 
>> 
>> Hi Chickeners!
>> 
>> I have come across a problem with multiple srfi-18 threads when tryping to 
>> listen to UDP sockets:
>> 
>> (use socket)
>> (set! *socket* (socket af/inet sock/dgram ))
>> (set! (so-reuse-address? *socket*) #t)
>> (socket-bind *socket* (inet-address "0.0.0.0" 5055))
>> ;; (socket-receive ..) here blocks the prints below
>> ;; after 1 s (about 10 hello's)
>> (thread-start! (lambda ()
>>                  (thread-sleep! 1)
>>                  (print "receiving ...")
>>                  (print (socket-receive *socket* 1024))
>>                  (print "done")))
>> 
>> (let loop ()
>>  (print "hello from main-thread!")
>>  (thread-sleep! .1)
>>  (loop))
>> 
>> ;; the hello's from the main thread continue after sending a udp packet:
>> ;; $ echo test `date` | socat - UDP-DATAGRAM:127.0.0.1:5055,broadcast
>> 
>> 
>> The documentation for socket clearly states that socket-receive should not 
>> block:
>> This call will block until data is available, but other threads can proceed.
>> 
>> What is wrong with my socket fd?
>> 
>> K.
>> _______________________________________________
>> Chicken-users mailing list
>> Chicken-users@nongnu.org
>> https://lists.nongnu.org/mailman/listinfo/chicken-users
> 

_______________________________________________
Chicken-users mailing list
Chicken-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to