[srvx-commits] CVS: services/src opserv.c,1.187.2.41,1.187.2.42 sockcheck.c,1.54.2.16,1.54.2.17
Brought to you by:
entrope
From: Miles P. <pet...@us...> - 2001-08-12 01:27:38
|
Update of /cvsroot/srvx/services/src In directory usw-pr-cvs1:/tmp/cvs-serv30731 Modified Files: Tag: rel-1_0 opserv.c sockcheck.c Log Message: dont let people clearhosts while their being checked. (segfaults) Index: opserv.c =================================================================== RCS file: /cvsroot/srvx/services/src/opserv.c,v retrieving revision 1.187.2.41 retrieving revision 1.187.2.42 diff -C2 -r1.187.2.41 -r1.187.2.42 *** opserv.c 2001/08/10 22:21:32 1.187.2.41 --- opserv.c 2001/08/12 01:27:35 1.187.2.42 *************** *** 189,192 **** --- 189,193 ---- #define OSMSG_HOST_CLEARED "'%s' was cleared from the cached hosts list." #define OSMSG_HOST_NOTCLEARED "'%s' was not cached and therefore wasn't cleared." + #define OSMSG_HOST_BUSY "'%s' is currently being checked, unable to clear." #define OSMSG_NO_SUCH_ADDRESS "Unable to resolve `%s' to an IP address." #define OSMSG_LINE_DUMPED "Raw line sent." *************** *** 1695,1699 **** { #if defined(HAVE_POLL) && defined(HAVE_PTHREAD) && !defined(__CYGWIN__) ! unsigned int n; OPSERV_MIN_PARMS(2, false); --- 1696,1700 ---- { #if defined(HAVE_POLL) && defined(HAVE_PTHREAD) && !defined(__CYGWIN__) ! unsigned int n, i; OPSERV_MIN_PARMS(2, false); *************** *** 1708,1713 **** hostname = un->hostname; } ! if (sockcheck_uncache_host(hostname)) { opserv_notice(user, OSMSG_HOST_CLEARED, hostname); } else { opserv_notice(user, OSMSG_HOST_NOTCLEARED, hostname); --- 1709,1716 ---- hostname = un->hostname; } ! if ((i = sockcheck_uncache_host(hostname)) && i != (unsigned)-1) { opserv_notice(user, OSMSG_HOST_CLEARED, hostname); + } else if (i == (unsigned)-1) { + opserv_notice(user, OSMSG_HOST_BUSY, hostname); } else { opserv_notice(user, OSMSG_HOST_NOTCLEARED, hostname); Index: sockcheck.c =================================================================== RCS file: /cvsroot/srvx/services/src/sockcheck.c,v retrieving revision 1.54.2.16 retrieving revision 1.54.2.17 diff -C2 -r1.54.2.16 -r1.54.2.17 *** sockcheck.c 2001/08/11 21:48:16 1.54.2.16 --- sockcheck.c 2001/08/12 01:27:35 1.54.2.17 *************** *** 267,270 **** --- 267,278 ---- { int res; + sockcheck_cache_info sci; + + if ((sci = dict_find(checked_ip_dict, name, NULL))) { + if ((sci->decision == PENDING) || (sci->decision == CHECKING)) { + return -1; + } + } + if (pthread_mutex_lock(&checked_ip_mutex)) { /* lock failure; this usually means coding error */ |