void freeconf(struct extparam *confp){ struct bandlim * bl; struct bandlim * blout; struct trafcount * tc; struct passwords *pw; struct ace *acl; struct filemon *fm; int counterd, archiverc; unsigned char *logname, *logtarget; unsigned char **archiver; unsigned char * logformat; int i; pthread_mutex_lock(&tc_mutex); confp->trafcountfunc = NULL; tc = confp->trafcounter; confp->trafcounter = NULL; counterd = confp->counterd; confp->counterd = -1; confp->countertype = NONE; pthread_mutex_unlock(&tc_mutex); pthread_mutex_lock(&bandlim_mutex); bl = confp->bandlimiter; blout = confp->bandlimiterout; confp->bandlimiter = NULL; confp->bandlimiterout = NULL; confp->bandlimfunc = NULL; pthread_mutex_unlock(&bandlim_mutex); pthread_mutex_lock(&pwl_mutex); pw = confp->pwl; confp->pwl = NULL; pthread_mutex_unlock(&pwl_mutex); logtarget = confp->logtarget; confp->logtarget = NULL; logformat = confp->logformat; confp->logformat = NULL; logname = confp->logname; confp->logname = NULL; confp->rotate = 0; confp->logtype = NONE; archiverc = confp->archiverc; confp->archiverc = 0; archiver = confp->archiver; confp->archiver = NULL; fm = confp->fmon; confp->fmon = NULL; confp->bandlimfunc = NULL; memset(&confp->intsa, 0, sizeof(confp->intsa)); memset(&confp->extsa, 0, sizeof(confp->extsa)); #ifndef NOIPV6 memset(&confp->extsa6, 0, sizeof(confp->extsa6)); *SAFAMILY(&confp->extsa6) = AF_INET6; #endif *SAFAMILY(&confp->intsa) = AF_INET; *SAFAMILY(&confp->extsa) = AF_INET; confp->singlepacket = 0; confp->maxchild = 100; resolvfunc = NULL; numservers = 0; acl = confp->acl; confp->acl = NULL; confp->logtime = confp->time = 0; usleep(SLEEPTIME); { char * args[] = {"auth", "iponly", NULL}; h_auth(2, (unsigned char **)args); } if(tc)dumpcounters(tc,counterd); for(; tc; tc = (struct trafcount *) itfree(tc, tc->next)){ if(tc->comment)myfree(tc->comment); freeacl(tc->ace); } freeacl(acl); freepwl(pw); for(; bl; bl = (struct bandlim *) itfree(bl, bl->next)) freeacl(bl->ace); for(; blout; blout = (struct bandlim *) itfree(blout, blout->next))freeacl(blout->ace); if(counterd != -1) { close(counterd); } for(; fm; fm = (struct filemon *)itfree(fm, fm->next)){ if(fm->path) myfree(fm->path); } if(logtarget) { myfree(logtarget); } if(logname) { myfree(logname); } if(logformat) { myfree(logformat); } if(archiver) { for(i = 0; i < archiverc; i++) myfree(archiver[i]); myfree(archiver); } }
/** * This method will return a valid AuthServerInterface, or NULL if this server * fails to connect to the AuthServer. * It'll build an AuthServer handle, and pass it to InterfaceManager, to resolve it to concrete Interface. * * @return AuthServerInterface constructed during call */ AuthServerInterface *RoamingServer::getAuthServer ( ) { ServerHandle<IAuthServer> h_auth(m_authaddr,-1); return InterfaceManager::instance()->get(h_auth); }