summaryrefslogtreecommitdiffstats
path: root/tests/socket.test
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2017-04-12 09:35:18 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2017-04-12 09:35:18 (GMT)
commit9b4213bb3f91778b852b5b3bf24904dfb7e6b04b (patch)
tree2d936efa3a46c26a2f9c39b73421666db8b0e5d9 /tests/socket.test
parentcd48f2d3131be957186014e7012d9445e2bd26ff (diff)
parent0cc7fd3498bf486b2eb5bc20a67f5671f2830097 (diff)
downloadtcl-9b4213bb3f91778b852b5b3bf24904dfb7e6b04b.zip
tcl-9b4213bb3f91778b852b5b3bf24904dfb7e6b04b.tar.gz
tcl-9b4213bb3f91778b852b5b3bf24904dfb7e6b04b.tar.bz2
merge core-8-6-branch
Diffstat (limited to 'tests/socket.test')
-rw-r--r--tests/socket.test17
1 files changed, 16 insertions, 1 deletions
diff --git a/tests/socket.test b/tests/socket.test
index 9a09c0f..d3d56fa 100644
--- a/tests/socket.test
+++ b/tests/socket.test
@@ -74,7 +74,22 @@ testConstraint exec [llength [info commands exec]]
# Produce a random port number in the Dynamic/Private range
# from 49152 through 65535.
-proc randport {} { expr {int(rand()*16383+49152)} }
+proc randport {} {
+ # firstly try dynamic port via server-socket(0):
+ set port 0x7fffffff
+ catch {
+ set port [lindex [fconfigure [set s [socket -server {} 0]] -sockname] 2]
+ close $s
+ }
+ while {[catch {
+ close [socket -server {} $port]
+ } msg]} {
+ if {[incr i] > 1000} {return -code error "too many iterations to get free random port: $msg"}
+ # try random port:
+ set port [expr {int(rand()*16383+49152)}]
+ }
+ return $port
+}
# Check if testsocket testflags is available
testConstraint testsocket_testflags [expr {![catch {