Esempio n. 1
0
/* Initialize resp if RES_INIT is not yet set or if res_init in some other
   thread requested re-initializing.  */
int
__res_maybe_init (res_state resp, int preinit)
{
    if (resp->options & RES_INIT) {
        if (__res_initstamp != resp->_u._ext.initstamp) {
            if (resp->nscount > 0) {
                __res_nclose (resp);
                int ns;
                for (ns = 0; ns < MAXNS; ns++) {
                    free (resp->_u._ext.nsaddrs[ns]);
                    resp->_u._ext.nsaddrs[ns] = NULL;
                }
                return __res_vinit (resp, 1);
            }
        }
        return 0;
    } else if (preinit) {
        if (!resp->retrans)
            resp->retrans = RES_TIMEOUT;
        if (!resp->retry)
            resp->retry = 4;
        resp->options = RES_DEFAULT;
        if (!resp->id)
            resp->id = res_randomid ();
        return __res_vinit (resp, 1);
    } else
        return __res_ninit (resp);
}
Esempio n. 2
0
File: res_libc.c Progetto: dreal/tai
/* Initialize resp if RES_INIT is not yet set or if res_init in some other
   thread requested re-initializing.  */
int
__res_maybe_init (res_state resp, int preinit)
{
	static time_t last_mtime;
	struct stat statbuf;
	int ret;

	if (resp->options & RES_INIT) {
		ret = stat (_PATH_RESCONF, &statbuf);
		__libc_lock_lock (lock);
		if ((ret == 0) && (last_mtime != statbuf.st_mtime)) {
			last_mtime = statbuf.st_mtime;
			atomicinc (__res_initstamp);
		}
		__libc_lock_unlock (lock);
		if (__res_initstamp != resp->_u._ext.initstamp) {
			if (resp->nscount > 0)
				__res_iclose (resp, true);
			return __res_vinit (resp, 1);
		}
		return 0;
	} else if (preinit) {
		if (!resp->retrans)
			resp->retrans = RES_TIMEOUT;
		if (!resp->retry)
			resp->retry = 4;
		resp->options = RES_DEFAULT;
		if (!resp->id)
			resp->id = res_randomid ();
		return __res_vinit (resp, 1);
	} else
		return __res_ninit (resp);
}
Esempio n. 3
0
/* Initialize resp if RES_INIT is not yet set or if res_init in some other
   thread requested re-initializing.  */
int
__res_maybe_init (res_state resp, int preinit)
{
	if (resp->options & RES_INIT) {
		if (__res_initstamp != resp->_u._ext.initstamp) {
			if (resp->nscount > 0)
				__res_iclose (resp, true);
			return __res_vinit (resp, 1);
		}
		return 0;
	} else if (preinit) {
		if (!resp->retrans)
			resp->retrans = RES_TIMEOUT;
		if (!resp->retry)
			resp->retry = 4;
		resp->options = RES_DEFAULT;
		if (!resp->id)
			resp->id = res_randomid ();
		return __res_vinit (resp, 1);
	} else
		return __res_ninit (resp);
}