Dear All,
I write a cgi program (coding in C) and run on apache2. (ver 2.2.x)
Now the client side get response data until the for loop end.
But I have to response data to client immediately instead of the CGI
finished.
What can I do for this issue ?
Note: I have already disabled the deflate.load in
/etc/apache2/mods-enabled/
My CGI source code are below:
==================================
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <time.h>
#include <sys/ipc.h>
#include <fcntl.h>
#include <getopt.h>
#include <sys/ioctl.h>
#include <unistd.h>
#include "cgivars.h"
#include <dirent.h>
#include <malloc.h>
#include <stdio_ext.h>
#define XML_RESPONSE_NO_EVENT \
"<Notification>"\
"<ServerStatus>"\
"<Timestamp>%s</Timestamp>"\
"<Type>xVRSvrMgrStatus</Type>"\
"<Content>"\
"<xVrSvrMgrStatus>-1</xVrSvrMgrStatus>"\
"</Content>"\
"</ServerStatus>"\
"</Notification>"
int handle_input_data(int form_method)
{
int i=0;
printf("HTTP/1.1 200 OK\n");
printf("Content-type: multipart/x-mixed-replace; boundary=xstringx\n");
printf("\n");
for(i=0;i<15;i++)
{
printf("--xstringx\n");
printf("Content-Type: text/xml; charset=utf-8\n");
printf("Content-Length: %d\n\n", strlen(XML_RESPONSE_NO_EVENT));
printf("\n%s", XML_RESPONSE_NO_EVENT);
printf("\n");
fflush(stdout);
sleep(1);
}
}
return 0;
}
int main(void)
{
int form_method; // POST = 1, GET = 0
form_method = getRequestMethod();
handle_input_data(form_method);
fflush(stdout);
exit(0);
}
Thanks & Best Regards, Tai |