summaryrefslogtreecommitdiffstats
path: root/tests/014/socket-misc.tl
blob: 5f53352972785319a7826443676ee9afb1c3388d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
(load "../sock-common")
(load "../common")

(defmacro set-and-get (:env env place val)
  (with-update-expander (getter setter) place env
    ^(progn (,setter ,val) (,getter))))

(with-stream (s (open-socket af-inet (logior sock-dgram sock-nonblock)))
  (test (sock-listen s) t)
  (let* ((orig #S(sockaddr-in))
         (addr orig))
    (rotate addr (sock-peer s))
    (vtest (sock-peer s) orig)))

(with-stream (s (open-socket af-inet sock-stream))
  (test (nzerop (set-and-get (sock-opt s sol-socket so-reuseaddr) 1)) t)
  (test (set-and-get (sock-opt s sol-socket so-reuseaddr (ffi int)) 0) 0)
  (whenlet ((addr (bindfree s 1025 65535)))
    ;; sock-bind enables so-reuseaddr.
    (test (nzerop (sock-opt s sol-socket so-reuseaddr)) t)))