From: Vlad S. <ser...@us...> - 2005-06-10 14:09:27
|
Update of /cvsroot/naviserver/naviserver/nsd In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3586/nsd Modified Files: binder.c Log Message: make Ns_SockListenUnix use prebound sockets Index: binder.c =================================================================== RCS file: /cvsroot/naviserver/naviserver/nsd/binder.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** binder.c 10 Jun 2005 10:12:36 -0000 1.4 --- binder.c 10 Jun 2005 14:09:18 -0000 1.5 *************** *** 260,264 **** *---------------------------------------------------------------------- * ! * Ns_SockListenUnix -- * * Helper routine for creating a listening UNIX domain socket. --- 260,264 ---- *---------------------------------------------------------------------- * ! * Ns_SockBindUnix -- * * Helper routine for creating a listening UNIX domain socket. *************** *** 274,278 **** SOCKET ! Ns_SockListenUnix(char *path) { int sock, err; --- 274,278 ---- SOCKET ! Ns_SockBindUnix(char *path) { int sock, err; *************** *** 300,303 **** --- 300,341 ---- *---------------------------------------------------------------------- * + * Ns_SockListenUnix -- + * + * Create a new Unix domain socket bound to the specified path and + * listening for new connections. + * + * Results: + * Socket descriptor or -1 on error. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + + SOCKET + Ns_SockListenUnix(char *path) + { + int sock = -1; + Tcl_HashEntry *hPtr; + + Ns_MutexLock(&lock); + hPtr = Tcl_FindHashEntry(&preboundUnix, path); + if (hPtr != NULL) { + sock = (int)Tcl_GetHashKey(&preboundUnix, hPtr); + Tcl_DeleteHashEntry(hPtr); + } + Ns_MutexUnlock(&lock); + if (hPtr == NULL) { + sock = Ns_SockBindUnix(path); + } + + return sock; + } + + + /* + *---------------------------------------------------------------------- + * * NsInitBinder -- * |