[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Chicken-users] udp.scm on cygwin
From: |
David Janssens |
Subject: |
Re: [Chicken-users] udp.scm on cygwin |
Date: |
Sat, 12 Nov 2005 19:16:15 +0100 |
Hello,
udp-recvfrom doesnt seem to work under cygwin with chicken v2.2. ("Bad address" error)
Replacing udp-recvfrom with this suggested patch doesnt work either:
(define udp-recvfrom
(lambda (sock len)
(let ((fd (io:descriptor sock))
(buf (make-string len))
(from (make-string _sockaddr_in_size)))
(let-location ((fromlen int _sockaddr_in_size))
(let ((result
(restart-nonblocking "recvfrom" fd #t
(lambda () (##net#recvfrom fd buf len
0 from #$fromlen)))))
(values result (substring buf 0 result)
(##net#inaddr->string from) (##net#inaddr-port from)))))) )
However, udp-recvfrom seems to work when I replace it with this less portable version:
(define udp-recvfrom
(lambda (sock len)
(let ((fd (io:descriptor sock))
(buf (make-string len))
(from (make-string _sockaddr_in_size))
(fromlen (make-string 4)))
(string-set! fromlen 0 (integer->char _sockaddr_in_size))
(string-set! fromlen 1 (integer->char 0))
(string-set! fromlen 2 (integer->char 0))
(string-set! fromlen 3 (integer->char 0))
(let ((result
(restart-nonblocking "recvfrom" fd #t
(lambda () (##net#recvfrom fd buf len
0 from
fromlen)))))
(values result (substring buf 0 result)
(##net#inaddr->string from) (##net#inaddr-port from))))))
Does anyone have a clue why this is so?
David
- Re: [Chicken-users] udp.scm on cygwin,
David Janssens <=