+ switch (IO->NextState) {
+ case eReadFile:
+ nbytes = FileRecvChunked(&IO->IOB, &errmsg);
+ if (nbytes < 0)
+ StrBufPlain(IO->ErrMsg, errmsg, -1);
+ else
+ {
+ if (IO->IOB.ChunkSendRemain == 0)
+ {
+ IO->NextState = eSendReply;
+ }
+ else
+ return;
+ }
+ break;
+ default:
+ nbytes = StrBuf_read_one_chunk_callback(watcher->fd, 0 /*TODO */, &IO->RecvBuf);
+ break;
+ }
+
+#ifdef BIGBAD_IODBG
+ {
+ int rv = 0;
+ char fn [SIZ];
+ FILE *fd;
+ const char *pch = ChrPtr(IO->RecvBuf.Buf);
+ const char *pchh = IO->RecvBuf.ReadWritePointer;
+ long nbytes;
+
+ if (pchh == NULL)
+ pchh = pch;
+
+ nbytes = StrLength(IO->RecvBuf.Buf) - (pchh - pch);
+ snprintf(fn, SIZ, "/tmp/foolog_ev_%s.%d",
+ ((CitContext*)(IO->CitContext))->ServiceName,
+ IO->SendBuf.fd);
+
+ fd = fopen(fn, "a+");
+ fprintf(fd, "Read: BufSize: %ld BufContent: [",
+ nbytes);
+ rv = fwrite(pchh, nbytes, 1, fd);
+ if (!rv) printf("failed to write debug to %s!\n", fn);
+ fprintf(fd, "]\n");
+
+
+ fclose(fd);
+ }
+#endif