Operator precedence causes it to be interpreted as:
if ((packet->flags & (DNS_RESPONSE_FLAG == 0)) || (packet->questioncount != 1))
which at least does not read as intended.