S_DONE
done = S_DONE | C_DONE;
if (do_server && !(done & S_DONE)) {
done |= S_DONE;
if ((done & S_DONE) && (done & C_DONE))
state = S_DONE;
case S_DONE:
state = S_DONE;
case S_DONE:
#define V_DONE(x) ((x) << S_DONE)