summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorapnadkarni <apnmbx-wits@yahoo.com>2024-05-24 15:29:54 (GMT)
committerapnadkarni <apnmbx-wits@yahoo.com>2024-05-24 15:29:54 (GMT)
commitc53584cfb97895b6ccd9f1ea14e7c773ca77ce67 (patch)
treea092cfef628156eee98299cdad90551e5380485b
parent63e1ae648f9adcb3fcafaefc9e678c7783d89797 (diff)
parent5319a81c10526a886bee03ffca10a1499ad0ea97 (diff)
downloadtcl-c53584cfb97895b6ccd9f1ea14e7c773ca77ce67.zip
tcl-c53584cfb97895b6ccd9f1ea14e7c773ca77ce67.tar.gz
tcl-c53584cfb97895b6ccd9f1ea14e7c773ca77ce67.tar.bz2
Fix [e589d9bdab] - fconfigure socket -peername
-rw-r--r--tests/socket.test19
-rw-r--r--win/tclWinSock.c2
2 files changed, 20 insertions, 1 deletions
diff --git a/tests/socket.test b/tests/socket.test
index b628404..2f71d7b 100644
--- a/tests/socket.test
+++ b/tests/socket.test
@@ -1110,6 +1110,25 @@ test socket_$af-7.5 {testing socket specific options} -setup {
close $s
close $s1
} -result [list $localhost 1 3]
+test socket_$af-7.6 {testing socket specific options - bug e589d9bdab} -setup {
+ set timer [after 10000 "set x timed_out"]
+ set l ""
+} -constraints [list socket supported_$af unixOrWin] -body {
+ set s [socket -server accept 0]
+ proc accept {s a p} {
+ global x
+ set x [fconfigure $s -sockname]
+ close $s
+ }
+ set listen [lindex [fconfigure $s -sockname] 2]
+ set s1 [socket $localhost $listen]
+ vwait x
+ lsort [dict keys [fconfigure $s1]]
+} -cleanup {
+ after cancel $timer
+ close $s
+ close $s1
+} -result {-blocking -buffering -buffersize -encoding -eofchar -keepalive -nodelay -peername -profile -sockname -translation}
test socket_$af-8.1 {testing -async flag on sockets} -constraints [list socket supported_$af] -body {
# NOTE: This test may fail on some Solaris 2.4 systems. If it does, check
diff --git a/win/tclWinSock.c b/win/tclWinSock.c
index 761023b..c05f550 100644
--- a/win/tclWinSock.c
+++ b/win/tclWinSock.c
@@ -1378,7 +1378,7 @@ TcpGetOptionProc(
reverseDNS = NI_NUMERICHOST;
}
- if (HAVE_OPTION("-peername")) {
+ if ((len == 0) || HAVE_OPTION("-peername")) {
address peername;
socklen_t size = sizeof(peername);