Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | [Bug 510001]: TclSockMinimumBuffers needs plat imp |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | core-8-4-branch |
Files: | files | file ages | folders |
SHA1: |
cbf7dc0a3171e2aa469848230bb31f20 |
User & Date: | jan.nijtmans 2012-04-04 08:36:18 |
Context
2012-04-04
| ||
14:50 | implement TclpGetPid for Cygwin check-in: dcc7f6a5b4 user: jan.nijtmans tags: bug-3508771 | |
14:44 | Quick workaround for busted branch tip. check-in: 2372607d3e user: dgp tags: core-8-4-branch | |
09:05 | [Bug 510001]: TclSockMinimumBuffers needs plat imp check-in: 2725f75513 user: jan.nijtmans tags: core-8-5-branch | |
08:36 | [Bug 510001]: TclSockMinimumBuffers needs plat imp check-in: cbf7dc0a31 user: jan.nijtmans tags: core-8-4-branch | |
2012-04-03
| ||
14:05 | clean-up tcl.decls the same way as tclInt.decls check-in: 90efd4b49a user: jan.nijtmans tags: core-8-4-branch | |
2012-03-29
| ||
12:13 | better solution for bug-510001 it fills a correctly working stub entry for Win64 Closed-Leaf check-in: 02368db2ae user: jan.nijtmans tags: bug-510001 | |
Changes
Changes to ChangeLog.
1 2 3 4 5 6 7 | 2012-04-03 Jan Nijtmans <[email protected]> * tools/genStubs.tcl: Let genStubs.tcl do the void -> VOID and const -> CONST translations, so we cannot forget it in the *.decls file * generic/tcl.decls: VOID -> void and CONST -> const, so depend * generic/tclInt.decls: on genStubs.tcl to generate the correct form form in the *Decls.h file. This brings tclInt.decls in the same form as | > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 2012-04-04 Jan Nijtmans <[email protected]> * win/tclWinSock.c: [Bug 510001]: TclSockMinimumBuffers needs plat imp * generic/tclIOSock.c: * generic/tclInt.decls: * generic/tclIntDecls.h: * generic/ttclStubInit.c: 2012-04-03 Jan Nijtmans <[email protected]> * tools/genStubs.tcl: Let genStubs.tcl do the void -> VOID and const -> CONST translations, so we cannot forget it in the *.decls file * generic/tcl.decls: VOID -> void and CONST -> const, so depend * generic/tclInt.decls: on genStubs.tcl to generate the correct form form in the *Decls.h file. This brings tclInt.decls in the same form as |
︙ | ︙ |
Changes to generic/tclIOSock.c.
︙ | ︙ | |||
79 80 81 82 83 84 85 86 87 | * * Side effects: * Sets SO_SNDBUF and SO_RCVBUF sizes. * *---------------------------------------------------------------------- */ int TclSockMinimumBuffers(sock, size) | > > > > > | | | | | | 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | * * Side effects: * Sets SO_SNDBUF and SO_RCVBUF sizes. * *---------------------------------------------------------------------- */ #undef TclSockMinimumBuffers #ifndef _WIN32 # define SOCKET int #endif int TclSockMinimumBuffers(sock, size) void *sock; /* Socket file descriptor */ int size; /* Minimum buffer size */ { int current; socklen_t len; len = sizeof(int); getsockopt((SOCKET)sock, SOL_SOCKET, SO_SNDBUF, (char *)¤t, &len); if (current < size) { len = sizeof(int); setsockopt((SOCKET)sock, SOL_SOCKET, SO_SNDBUF, (char *)&size, len); } len = sizeof(int); getsockopt((SOCKET)sock, SOL_SOCKET, SO_RCVBUF, (char *)¤t, &len); if (current < size) { len = sizeof(int); setsockopt((SOCKET)sock, SOL_SOCKET, SO_RCVBUF, (char *)&size, len); } return TCL_OK; } |
Changes to generic/tclInt.decls.
︙ | ︙ | |||
404 405 406 407 408 409 410 | void TclSetupEnv(Tcl_Interp *interp) } declare 103 { int TclSockGetPort(Tcl_Interp *interp, char *str, char *proto, int *portPtr) } declare 104 {unix win} { | > > > | | 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 | void TclSetupEnv(Tcl_Interp *interp) } declare 103 { int TclSockGetPort(Tcl_Interp *interp, char *str, char *proto, int *portPtr) } declare 104 {unix win} { int TclSockMinimumBuffersOld(int sock, int size) } declare 110 {unix win} { int TclSockMinimumBuffers(void *sock, int size) } # Replaced by Tcl_FSStat in 8.4: #declare 105 { # int TclStat(const char *path, Tcl_StatBuf *buf) #} declare 106 { int TclStatDeleteProc(TclStatProc_ *proc) |
︙ | ︙ |
Changes to generic/tclIntDecls.h.
︙ | ︙ | |||
287 288 289 290 291 292 293 | /* 102 */ EXTERN void TclSetupEnv _ANSI_ARGS_((Tcl_Interp *interp)); /* 103 */ EXTERN int TclSockGetPort _ANSI_ARGS_((Tcl_Interp *interp, char *str, char *proto, int *portPtr)); #if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ /* 104 */ | | | > | > > > > > > > > | 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 | /* 102 */ EXTERN void TclSetupEnv _ANSI_ARGS_((Tcl_Interp *interp)); /* 103 */ EXTERN int TclSockGetPort _ANSI_ARGS_((Tcl_Interp *interp, char *str, char *proto, int *portPtr)); #if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ /* 104 */ EXTERN int TclSockMinimumBuffersOld _ANSI_ARGS_((int sock, int size)); #endif /* UNIX */ #ifdef __WIN32__ /* 104 */ EXTERN int TclSockMinimumBuffersOld _ANSI_ARGS_((int sock, int size)); #endif /* __WIN32__ */ /* Slot 105 is reserved */ /* 106 */ EXTERN int TclStatDeleteProc _ANSI_ARGS_((TclStatProc_ *proc)); /* 107 */ EXTERN int TclStatInsertProc _ANSI_ARGS_((TclStatProc_ *proc)); /* 108 */ EXTERN void TclTeardownNamespace _ANSI_ARGS_((Namespace *nsPtr)); /* 109 */ EXTERN int TclUpdateReturnInfo _ANSI_ARGS_((Interp *iPtr)); #if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ /* 110 */ EXTERN int TclSockMinimumBuffers _ANSI_ARGS_((VOID *sock, int size)); #endif /* UNIX */ #ifdef __WIN32__ /* 110 */ EXTERN int TclSockMinimumBuffers _ANSI_ARGS_((VOID *sock, int size)); #endif /* __WIN32__ */ /* 111 */ EXTERN void Tcl_AddInterpResolvers _ANSI_ARGS_(( Tcl_Interp *interp, CONST char *name, Tcl_ResolveCmdProc *cmdProc, Tcl_ResolveVarProc *varProc, Tcl_ResolveCompiledVarProc *compiledVarProc)); /* 112 */ |
︙ | ︙ | |||
649 650 651 652 653 654 655 | int (*tclServiceIdle) _ANSI_ARGS_((void)); /* 98 */ VOID *reserved99; VOID *reserved100; char * (*tclSetPreInitScript) _ANSI_ARGS_((char *string)); /* 101 */ void (*tclSetupEnv) _ANSI_ARGS_((Tcl_Interp *interp)); /* 102 */ int (*tclSockGetPort) _ANSI_ARGS_((Tcl_Interp *interp, char *str, char *proto, int *portPtr)); /* 103 */ #if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ | | | > > > > > > > > | 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 | int (*tclServiceIdle) _ANSI_ARGS_((void)); /* 98 */ VOID *reserved99; VOID *reserved100; char * (*tclSetPreInitScript) _ANSI_ARGS_((char *string)); /* 101 */ void (*tclSetupEnv) _ANSI_ARGS_((Tcl_Interp *interp)); /* 102 */ int (*tclSockGetPort) _ANSI_ARGS_((Tcl_Interp *interp, char *str, char *proto, int *portPtr)); /* 103 */ #if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ int (*tclSockMinimumBuffersOld) _ANSI_ARGS_((int sock, int size)); /* 104 */ #endif /* UNIX */ #ifdef __WIN32__ int (*tclSockMinimumBuffersOld) _ANSI_ARGS_((int sock, int size)); /* 104 */ #endif /* __WIN32__ */ #ifdef MAC_TCL VOID *reserved104; #endif /* MAC_TCL */ VOID *reserved105; int (*tclStatDeleteProc) _ANSI_ARGS_((TclStatProc_ *proc)); /* 106 */ int (*tclStatInsertProc) _ANSI_ARGS_((TclStatProc_ *proc)); /* 107 */ void (*tclTeardownNamespace) _ANSI_ARGS_((Namespace *nsPtr)); /* 108 */ int (*tclUpdateReturnInfo) _ANSI_ARGS_((Interp *iPtr)); /* 109 */ #if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ int (*tclSockMinimumBuffers) _ANSI_ARGS_((VOID *sock, int size)); /* 110 */ #endif /* UNIX */ #ifdef __WIN32__ int (*tclSockMinimumBuffers) _ANSI_ARGS_((VOID *sock, int size)); /* 110 */ #endif /* __WIN32__ */ #ifdef MAC_TCL VOID *reserved110; #endif /* MAC_TCL */ void (*tcl_AddInterpResolvers) _ANSI_ARGS_((Tcl_Interp *interp, CONST char *name, Tcl_ResolveCmdProc *cmdProc, Tcl_ResolveVarProc *varProc, Tcl_ResolveCompiledVarProc *compiledVarProc)); /* 111 */ int (*tcl_AppendExportList) _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Namespace *nsPtr, Tcl_Obj *objPtr)); /* 112 */ Tcl_Namespace * (*tcl_CreateNamespace) _ANSI_ARGS_((Tcl_Interp *interp, CONST char *name, ClientData clientData, Tcl_NamespaceDeleteProc *deleteProc)); /* 113 */ void (*tcl_DeleteNamespace) _ANSI_ARGS_((Tcl_Namespace *nsPtr)); /* 114 */ int (*tcl_Export) _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Namespace *nsPtr, CONST char *pattern, int resetListFirst)); /* 115 */ Tcl_Command (*tcl_FindCommand) _ANSI_ARGS_((Tcl_Interp *interp, CONST char *name, Tcl_Namespace *contextNsPtr, int flags)); /* 116 */ Tcl_Namespace * (*tcl_FindNamespace) _ANSI_ARGS_((Tcl_Interp *interp, CONST char *name, Tcl_Namespace *contextNsPtr, int flags)); /* 117 */ |
︙ | ︙ | |||
1099 1100 1101 1102 1103 1104 1105 | (tclIntStubsPtr->tclSetupEnv) /* 102 */ #endif #ifndef TclSockGetPort #define TclSockGetPort \ (tclIntStubsPtr->tclSockGetPort) /* 103 */ #endif #if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ | | | | | | | > > > > > | > > > > > > | 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 | (tclIntStubsPtr->tclSetupEnv) /* 102 */ #endif #ifndef TclSockGetPort #define TclSockGetPort \ (tclIntStubsPtr->tclSockGetPort) /* 103 */ #endif #if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ #ifndef TclSockMinimumBuffersOld #define TclSockMinimumBuffersOld \ (tclIntStubsPtr->tclSockMinimumBuffersOld) /* 104 */ #endif #endif /* UNIX */ #ifdef __WIN32__ #ifndef TclSockMinimumBuffersOld #define TclSockMinimumBuffersOld \ (tclIntStubsPtr->tclSockMinimumBuffersOld) /* 104 */ #endif #endif /* __WIN32__ */ /* Slot 105 is reserved */ #ifndef TclStatDeleteProc #define TclStatDeleteProc \ (tclIntStubsPtr->tclStatDeleteProc) /* 106 */ #endif #ifndef TclStatInsertProc #define TclStatInsertProc \ (tclIntStubsPtr->tclStatInsertProc) /* 107 */ #endif #ifndef TclTeardownNamespace #define TclTeardownNamespace \ (tclIntStubsPtr->tclTeardownNamespace) /* 108 */ #endif #ifndef TclUpdateReturnInfo #define TclUpdateReturnInfo \ (tclIntStubsPtr->tclUpdateReturnInfo) /* 109 */ #endif #if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ #ifndef TclSockMinimumBuffers #define TclSockMinimumBuffers \ (tclIntStubsPtr->tclSockMinimumBuffers) /* 110 */ #endif #endif /* UNIX */ #ifdef __WIN32__ #ifndef TclSockMinimumBuffers #define TclSockMinimumBuffers \ (tclIntStubsPtr->tclSockMinimumBuffers) /* 110 */ #endif #endif /* __WIN32__ */ #ifndef Tcl_AddInterpResolvers #define Tcl_AddInterpResolvers \ (tclIntStubsPtr->tcl_AddInterpResolvers) /* 111 */ #endif #ifndef Tcl_AppendExportList #define Tcl_AppendExportList \ (tclIntStubsPtr->tcl_AppendExportList) /* 112 */ |
︙ | ︙ | |||
1401 1402 1403 1404 1405 1406 1407 1408 1409 | #define TclMatchIsTrivial \ (tclIntStubsPtr->tclMatchIsTrivial) /* 199 */ #endif #endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ /* !END!: Do not edit above this line. */ #endif /* _TCLINTDECLS */ | > > > > > > | 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 | #define TclMatchIsTrivial \ (tclIntStubsPtr->tclMatchIsTrivial) /* 199 */ #endif #endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */ /* !END!: Do not edit above this line. */ #if !defined(_WIN64) /* See bug 510001: TclSockMinimumBuffers needs plat imp */ # undef TclSockMinimumBuffers # define TclSockMinimumBuffers(a,b) TclSockMinimumBuffersOld((int)(a),b) #endif #endif /* _TCLINTDECLS */ |
Changes to generic/tclStubInit.c.
︙ | ︙ | |||
50 51 52 53 54 55 56 57 58 59 60 61 62 63 | NULL, #endif NULL, NULL, NULL, NULL }; #ifdef __CYGWIN__ /* Trick, so we don't have to include <windows.h> here, which * - b.t.w. - lacks this function anyway */ #define GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS 0x00000004 int __stdcall GetModuleHandleExW(unsigned int, const char *, void *); | > > > > > > > > > > > > | 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | NULL, #endif NULL, NULL, NULL, NULL }; /* See bug 510001: TclSockMinimumBuffers needs plat imp */ #ifdef _WIN64 # define TclSockMinimumBuffersOld 0 #else int TclSockMinimumBuffersOld(sock, size) int sock; int size; { return TclSockMinimumBuffers((void *) (size_t) sock, size); } #endif #ifdef __CYGWIN__ /* Trick, so we don't have to include <windows.h> here, which * - b.t.w. - lacks this function anyway */ #define GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS 0x00000004 int __stdcall GetModuleHandleExW(unsigned int, const char *, void *); |
︙ | ︙ | |||
313 314 315 316 317 318 319 | TclServiceIdle, /* 98 */ NULL, /* 99 */ NULL, /* 100 */ TclSetPreInitScript, /* 101 */ TclSetupEnv, /* 102 */ TclSockGetPort, /* 103 */ #if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ | | | > > > > > > > > | 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 | TclServiceIdle, /* 98 */ NULL, /* 99 */ NULL, /* 100 */ TclSetPreInitScript, /* 101 */ TclSetupEnv, /* 102 */ TclSockGetPort, /* 103 */ #if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ TclSockMinimumBuffersOld, /* 104 */ #endif /* UNIX */ #ifdef __WIN32__ TclSockMinimumBuffersOld, /* 104 */ #endif /* __WIN32__ */ #ifdef MAC_TCL NULL, /* 104 */ #endif /* MAC_TCL */ NULL, /* 105 */ TclStatDeleteProc, /* 106 */ TclStatInsertProc, /* 107 */ TclTeardownNamespace, /* 108 */ TclUpdateReturnInfo, /* 109 */ #if !defined(__WIN32__) && !defined(MAC_TCL) /* UNIX */ TclSockMinimumBuffers, /* 110 */ #endif /* UNIX */ #ifdef __WIN32__ TclSockMinimumBuffers, /* 110 */ #endif /* __WIN32__ */ #ifdef MAC_TCL NULL, /* 110 */ #endif /* MAC_TCL */ Tcl_AddInterpResolvers, /* 111 */ Tcl_AppendExportList, /* 112 */ Tcl_CreateNamespace, /* 113 */ Tcl_DeleteNamespace, /* 114 */ Tcl_Export, /* 115 */ Tcl_FindCommand, /* 116 */ Tcl_FindNamespace, /* 117 */ |
︙ | ︙ |
Changes to win/tclWinSock.c.
︙ | ︙ | |||
1152 1153 1154 1155 1156 1157 1158 | SetHandleInformation( (HANDLE) sock, HANDLE_FLAG_INHERIT, 0 ); /* * Set kernel space buffering */ | | | 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 | SetHandleInformation( (HANDLE) sock, HANDLE_FLAG_INHERIT, 0 ); /* * Set kernel space buffering */ TclSockMinimumBuffers((void *)sock, TCP_BUFFER_SIZE); if (server) { /* * Bind to the specified port. Note that we must not call setsockopt * with SO_REUSEADDR because Microsoft allows addresses to be reused * even if they are still in use. * |
︙ | ︙ | |||
1513 1514 1515 1516 1517 1518 1519 | tsdPtr = (ThreadSpecificData *)TclThreadDataKeyGet(&dataKey); /* * Set kernel space buffering and non-blocking. */ | | | 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 | tsdPtr = (ThreadSpecificData *)TclThreadDataKeyGet(&dataKey); /* * Set kernel space buffering and non-blocking. */ TclSockMinimumBuffers(sock, TCP_BUFFER_SIZE); infoPtr = NewSocketInfo((SOCKET) sock); /* * Start watching for read/write events on the socket. */ |
︙ | ︙ | |||
2641 2642 2643 2644 2645 2646 2647 | * As defined for each function. * *---------------------------------------------------------------------- */ int TclWinGetSockOpt(SOCKET s, int level, int optname, char * optval, | | | 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 | * As defined for each function. * *---------------------------------------------------------------------- */ int TclWinGetSockOpt(SOCKET s, int level, int optname, char * optval, int *optlen) { /* * Check that WinSock is initialized; do not call it if not, to * prevent system crashes. This can happen at exit time if the exit * handler for WinSock ran before other exit handlers that want to * use sockets. */ |
︙ | ︙ |