Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | bind/inet now sets SO_REUSEADDR |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
15fd017f959a14a9a9a15f17a7c3996a |
User & Date: | aldo 2016-12-11 13:55:32 |
Context
2016-12-11
| ||
13:57 | added missing license headers check-in: 03e5fe6318 user: aldo tags: trunk | |
13:55 | bind/inet now sets SO_REUSEADDR check-in: 15fd017f95 user: aldo tags: trunk | |
13:55 | new posix funcs. dup fork, improved wait-for-pid check-in: 00d9573880 user: aldo tags: trunk | |
Changes
Changes to socket.sls.
111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
(let ([r (connect* (port-file-descriptor socket) addr (ftype-sizeof sockaddr_in))]) (foreign-free (ftype-pointer-address addr)) (when (< r 0) (errorf 'connect/inet "failed: ~a" (strerror)))))) (define (bind/inet socket address port) (define bind* (foreign-procedure "bind" (int (* sockaddr_in) socklen_t) int)) (let ([addr (make-ftype-pointer sockaddr_in (foreign-alloc (ftype-sizeof sockaddr_in)))]) (memset (ftype-pointer-address addr) 0 (ftype-sizeof sockaddr_in)) (ftype-set! sockaddr_in (sin_family) addr (socket-domain 'inet)) (case address [any (ftype-set! in_addr (s_addr) (ftype-&ref sockaddr_in (sin_addr) addr) INADDR_ANY)] |
> > > > > > |
111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
(let ([r (connect* (port-file-descriptor socket) addr (ftype-sizeof sockaddr_in))]) (foreign-free (ftype-pointer-address addr)) (when (< r 0) (errorf 'connect/inet "failed: ~a" (strerror)))))) (define (bind/inet socket address port) (define SO_REUSEADDR 2) (define SOL_SOCKET 1) (define setsockopt* (foreign-procedure "setsockopt" (int int int u8* socklen_t) int)) (define bind* (foreign-procedure "bind" (int (* sockaddr_in) socklen_t) int)) (define opt (make-bytevector (ftype-sizeof int))) (bytevector-sint-set! opt 0 1 (native-endianness) (ftype-sizeof int)) (setsockopt* (port-file-descriptor socket) SOL_SOCKET SO_REUSEADDR opt (ftype-sizeof int)) (let ([addr (make-ftype-pointer sockaddr_in (foreign-alloc (ftype-sizeof sockaddr_in)))]) (memset (ftype-pointer-address addr) 0 (ftype-sizeof sockaddr_in)) (ftype-set! sockaddr_in (sin_family) addr (socket-domain 'inet)) (case address [any (ftype-set! in_addr (s_addr) (ftype-&ref sockaddr_in (sin_addr) addr) INADDR_ANY)] |