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 */
|