- if (input_finished(c->question)) {
- unsigned int i;
-
- for (i = 0; c->question[i]; i++)
- c->question[i] = toupper(c->question[i]);
- set_state(c, SENDING_ANSWER);
+ if (input_finished(c->question))
+ set_state(c, SENDING_OTHER_QUESTION_PREFIX);
+ break;
+ case SENDING_OTHER_QUESTION_PREFIX:
+ if (!c->subclient)
+ goto need_subclient;
+ if (!send_string(c, "While the Oracle ponders,"
+ " please answer the following question:\n"))
+ goto fail;
+ break;
+ case SENDING_OTHER_QUESTION:
+ if (!c->subclient)
+ goto need_subclient;
+ if (!send_string(c, c->subclient->question))
+ goto fail;
+ break;
+ case RECEIVING_OTHER_ANSWER:
+ if (!c->subclient)
+ goto need_subclient;
+ len = read_string(c->fd, &c->subclient->answer);
+ if (len <= 0)
+ goto fail;
+ if (input_finished(c->subclient->answer)) {
+ set_state(c, SENDING_ANSWER_PREFIX);
+ wakeup(c->subclient);