示例#1
0
static void module_instance_free_old(CONF_SECTION *cs, module_instance_t *node,
				     time_t when)
{
	fr_module_hup_t *mh, **last;

	/*
	 *	Walk the list, freeing up old instances.
	 */
	last = &(node->mh);
	while (*last) {
		mh = *last;

		/*
		 *	Free only every 60 seconds.
		 */
		if ((when - mh->when) < 60) {
			last = &(mh->next);
			continue;
		}

		cf_section_parse_free(cs, mh->insthandle);
		
		if (node->entry->module->detach) {
			if ((node->entry->module->detach)(mh->insthandle) < 0) {
				DEBUG("WARNING: Failed detaching module %s cleanly.  Doing forcible shutdown", node->name);

			}
		} else {
			free(mh->insthandle);
		}

		*last = mh->next;
		free(mh);
	}
}
示例#2
0
static void module_instance_free_old(CONF_SECTION *cs, module_instance_t *node,
				     time_t when)
{
	fr_module_hup_t *mh, **last;

	/*
	 *	Walk the list, freeing up old instances.
	 */
	last = &(node->mh);
	while (*last) {
		mh = *last;

		/*
		 *	Free only every 60 seconds.
		 */
		if ((when - mh->when) < 60) {
			last = &(mh->next);
			continue;
		}

		cf_section_parse_free(cs, mh->insthandle);
		
		if (node->entry->module->detach) {
			(node->entry->module->detach)(mh->insthandle);
		} else {
			free(mh->insthandle);
		}

		*last = mh->next;
		free(mh);
	}
}