code = cm_SearchCellByDNS(cp->name, cp->name, &ttl, cm_AddCellProc, &rock);
if ( code == 0 ) { /* got cell from DNS */
lock_ObtainMutex(&cp->mx);
- cp->flags |= CM_CELLFLAG_DNS;
- cp->flags &= ~CM_CELLFLAG_VLSERVER_INVALID;
+ _InterlockedOr(&cp->flags, CM_CELLFLAG_DNS);
+ _InterlockedAnd(&cp->flags, ~CM_CELLFLAG_VLSERVER_INVALID);
cp->timeout = time(0) + ttl;
lock_ReleaseMutex(&cp->mx);
}
}
else {
lock_ObtainMutex(&cp->mx);
- cp->flags &= ~CM_CELLFLAG_DNS;
+ _InterlockedAnd(&cp->flags, ~CM_CELLFLAG_DNS);
lock_ReleaseMutex(&cp->mx);
}
if (code) {
lock_ObtainMutex(&cp->mx);
- cp->flags |= CM_CELLFLAG_VLSERVER_INVALID;
+ _InterlockedOr(&cp->flags, CM_CELLFLAG_VLSERVER_INVALID);
lock_ReleaseMutex(&cp->mx);
lock_ObtainWrite(&cm_cellLock);
}
else {
lock_ObtainMutex(&cp->mx);
- cp->flags &= ~CM_CELLFLAG_VLSERVER_INVALID;
+ _InterlockedAnd(&cp->flags, ~CM_CELLFLAG_VLSERVER_INVALID);
lock_ReleaseMutex(&cp->mx);
lock_ObtainWrite(&cm_cellLock);
cm_RandomizeServer(&cp->vlServersp);
lock_ObtainMutex(&cellp->mx);
if (flags & CM_SETCELLFLAG_SUID)
- cellp->flags |= CM_CELLFLAG_SUID;
+ _InterlockedOr(&cellp->flags, CM_CELLFLAG_SUID);
else
- cellp->flags &= ~CM_CELLFLAG_SUID;
+ _InterlockedAnd(&cellp->flags, ~CM_CELLFLAG_SUID);
lock_ReleaseMutex(&cellp->mx);
return 0;