LINUX.ORG.RU

c++ fastcgi, ошибка в работе приложения


0

0

Пытаюсь cgi-приложение перенести на fastcgi
Код для CGI:
#include <fstream>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
int main(){
printf("Content-type: image/gif\r\n");
printf("\r\n");
ifstream in("../image.gif");
if (!in) return 1;
char buf;
buf = in.get();
while (in){
printf("%c",buf);
buf = in.get();
}
in.close();
return 0;
}


Код для FastCGI:
#include <fstream>
#include <stdlib.h>
#include "fcgi_stdio.h"
using namespace std;
int main(){
while(FCGI_Accept() >= 0) {
printf("Content-type: image/gif\r\n");
printf("\r\n");
ifstream in("../image.gif");
if (!in) return 1;
char buf;
buf = in.get();
while (in){
printf("%c",buf);
buf = in.get();
}
in.close();
}
return 0;
}

CGI пример естественно работает и выводит image.gif полностью. Пример для fastcgi выводит заголовок и кусок изображения, причем для разных gif-изображений разный, как это исправить ?
Веб сервер: Apache2
Fastcgi версии 2.4.0


1. Никогда не мешайте stdio и iostream.

2. Пахнет буферизацией. Точнее, несброшеным буфером.

anonymous
()
Ответ на: комментарий от winger

printf - в данном случае функция от fcgi_stdio.h fflush(stdout); вроде бы не помогает, куда именно ее всунуть?

niro
() автор топика
Ответ на: комментарий от winger

>Странно. Я сейчас у себя потестил - все работает в исходном варианте.

fcgi-вариант ?

apache2 2.2.8-1ubuntu0.2
libfcgi0ldbl 2.4.0-7
libapache2-mod-fastcgi 2.4.6-0ubuntu1

niro
() автор топика
Ответ на: комментарий от niro

apache2_2.2.8-1ubuntu0.2_all
libfcgi-dev_2.4.0-7_i386
libapache2-mod-fastcgi_2.4.6-0ubuntu1_i386

winger
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.