diff --git a/pkgs/racket-test-core/tests/racket/udp.rktl b/pkgs/racket-test-core/tests/racket/udp.rktl index d902e7cd08..f209abdb70 100644 --- a/pkgs/racket-test-core/tests/racket/udp.rktl +++ b/pkgs/racket-test-core/tests/racket/udp.rktl @@ -195,6 +195,16 @@ (test #f sync/timeout 0.05 udp2-r) (test #f sync/timeout 0.05 (udp-receive!-evt udp2 us1)) (test #f sync/timeout 0.05 (udp-receive!-evt udp2 (make-bytes 0))) +(when (run-unreliable-tests? 'timing) + (let loop ([retries 5]) + (if (zero? retries) + (test #t 'udp-receive-evt-does-not-spin #f) + (let ([start (current-process-milliseconds)] + [wait 0.05]) + (test #f sync/timeout wait (udp-receive!-evt udp2 (make-bytes 0))) + (or (< (- (current-process-milliseconds) start) + (/ wait 5)) + (loop (sub1 retries))))))) ;; break behavior (let ([t (parameterize-break #f diff --git a/racket/src/cs/schemified/io.scm b/racket/src/cs/schemified/io.scm index 07e05a8119..f90108942f 100644 --- a/racket/src/cs/schemified/io.scm +++ b/racket/src/cs/schemified/io.scm @@ -37414,7 +37414,7 @@ (define cell.2 (unsafe-make-place-local "")) (define struct:udp-receiving-evt (make-record-type-descriptor* 'udp-receive-evt #f #f #f #f 2 0)) -(define effect_2721 +(define effect_2847 (struct-type-install-properties! struct:udp-receiving-evt 'udp-receive-evt @@ -37449,7 +37449,7 @@ (unsafe-place-local-ref cell.1) (udp-s (|#%app| udp-receiving-evt-u self_0)) ps_0 - 2))) + 1))) (values #f self_0)))))))))))) (current-inspector) #f diff --git a/racket/src/io/network/udp-receive.rkt b/racket/src/io/network/udp-receive.rkt index 5732640400..16a7927b27 100644 --- a/racket/src/io/network/udp-receive.rkt +++ b/racket/src/io/network/udp-receive.rkt @@ -149,7 +149,7 @@ (sandman-poll-ctx-add-poll-set-adder! poll-ctx (lambda (ps) - (rktio_poll_add rktio (udp-s (udp-receiving-evt-u self)) ps RKTIO_POLL_WRITE))) + (rktio_poll_add rktio (udp-s (udp-receiving-evt-u self)) ps RKTIO_POLL_READ))) (values #f self)])])))) #:reflection-name 'udp-receive-evt #:authentic)