summaryrefslogtreecommitdiffstats
path: root/win
diff options
context:
space:
mode:
authorlimeboy <that.lemon+tcl@gmai.com>2016-12-14 15:49:27 (GMT)
committerlimeboy <that.lemon+tcl@gmai.com>2016-12-14 15:49:27 (GMT)
commitfdc5267c5f6488e6f8065453fc078e0ebc45d861 (patch)
tree252d57e9f2c63147b2b616e30c2c54e1fe47a086 /win
parentbba3b008ba9e94fbe9a9ffce00aaf90077136fca (diff)
downloadtcl-fdc5267c5f6488e6f8065453fc078e0ebc45d861.zip
tcl-fdc5267c5f6488e6f8065453fc078e0ebc45d861.tar.gz
tcl-fdc5267c5f6488e6f8065453fc078e0ebc45d861.tar.bz2
Make OpenTcpServerEx accept a 'service' string parameter instead of a port.
Diffstat (limited to 'win')
-rw-r--r--win/tclWinSock.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/win/tclWinSock.c b/win/tclWinSock.c
index af22cf8..5e0d7c8 100644
--- a/win/tclWinSock.c
+++ b/win/tclWinSock.c
@@ -2037,7 +2037,7 @@ Tcl_MakeTcpClientChannel(
Tcl_Channel
Tcl_OpenTcpServerEx(
Tcl_Interp *interp, /* For error reporting - may be NULL. */
- int port, /* Port number to open. */
+ const char *service, /* Port number to open. */
const char *myHost, /* Name of local host. */
unsigned int flags, /* Flags. */
Tcl_TcpAcceptProc *acceptProc,
@@ -2053,7 +2053,7 @@ Tcl_OpenTcpServerEx(
char channelName[SOCK_CHAN_LENGTH];
u_long flag = 1; /* Indicates nonblocking mode. */
const char *errorMsg = NULL;
- int optvalue;
+ int optvalue, port;
if (TclpHasSockets(interp) != TCL_OK) {
return NULL;
@@ -2073,6 +2073,11 @@ Tcl_OpenTcpServerEx(
* Construct the addresses for each end of the socket.
*/
+ if (TclSockGetPort(interp, service, "tcp", &port) != TCL_OK) {
+ errorMsg = "invalid port number";
+ goto error;
+ }
+
if (!TclCreateSocketAddress(interp, &addrlist, myHost, port, 1, &errorMsg)) {
goto error;
}