tags:

views:

137

answers:

1

I am attempting to run a fastcgi app written in C language behind the Nginx web server. The web browser never finishes loading and the response never completes. I am not sure how to approach it and debug. Any insight would be appreciated.

The hello world application was taken from fastcgi.com and simplified to look like this:

#include "fcgi_stdio.h"
#include <stdlib.h>

int main(void)
{

 while(FCGI_Accept >= 0)
 {
  printf("Content-type: text/html\r\nStatus: 200 OK\r\n\r\n");

 }

  return 0;
}

Output executable is executed with either one of:

cgi-fcgi -connect 127.0.0.1:9000 a.out

or

spawn-fcgi -a120.0.0.1 -p9000 -n ./a.out

Nginx configuration is:

server {
        listen   80;
        server_name _;

 location / {
                        # host and port to fastcgi server
                        root   /home/user/www;
                        index  index.html;

                        fastcgi_pass 127.0.0.1:9000;
 }
}
+1  A: 

You need to call FCGI_Accept in the while loop:

while(FCGI_Accept() >= 0)

You have FCGI_Accept >= 0 in your code. I think that results in the address of the FCGI_Accept function being compared to 0. Since the function exists, the comparison is never false, but the function is not being invoked.

Sinan Ünür
Yes. Thanks for pointing out that mistake. It was the missing parentheses.