Simon J. : xinetd && c-http-server

Hi!

Also ich habe vor einen Http-Server zu coden und zwar in Verbindung mit xinetd.
Also ich habe in der /etc/xinetd.conf folgendes stehen:
defaults
{
 log_type        = SYSLOG daemon info
 log_on_failure  = HOST
 log_on_success  = PID HOST DURATION EXIT
 cps             = 50 5
 instances       = 50
 per_source      = 10
 v6only          = no
 groups          = yes
 umask           = 002
}

service http
{
 flags           = REUSE
 socket_type     = stream
 wait            = no
 protocol        = tcp
 bind            = 127.0.0.1:80
 user            = root
 server          = /usr/xyz/xyz # xyz ist ein C-Programm, nämlich mein Server.
 log_on_failure += USERID
 disable         = no
}

Ich hoffe das meine Datei soweit korrekt ist?!
Also xinetd bemängelt nichts.

So nun mein Problem: Es funktioniert nicht!
Wenn ich xinetd gestartet habe und nun eine Anfrage z.B. mit dem Firefox starte sagt er mir das die Verbindung fehlschlägt.
Auch mein Server wird nicht aufgerufen wie erwartet das würde nämlich in einer Logdatei stehen, die nach wie vor komplett leer ist.

Was ist falsch?
Irgendwas muss falsch sein sonst würde es ja funzen nicht?!

Ich verbleibe mit freundlichen Grüßen
Simon J.

  1. Also nun wird xyz(mein C-Server) aufgerufen aber es funktioniert trotzdem noch nicht wie es sollte.

    Mein Programm sieht momentan so aus:

      
    int main(int argc, char** argv)  
    {  
     char line[1024];  
     unsigned int line_nr = 0;  
     char* haha = 0;  
      
     while(fgets(line, sizeof(line), stdin)) {  
      strcat(haha, line);  
      line_nr++;  
     }  
      
     printf("HTTP/1.1 200 Ok\r\n");  
     printf("Server: server:\r\n");  
     printf("Content-type: text/plain\r\n");  
     printf("Content-length: 8\r\n\r\n");  
     printf("Success!");  
      
     return EXIT_SUCCESS;  
    }  
    
    

    Die while-Schleife läuft wahrscheinlich als Endlosschleife.
    Denn aufgerufen wird das Programm laut ps und pstree.
    Sollte das Programm funktionieren wenn es von xinetd aufgerufen wird?
    Ich konnte das nirgends nachlesen das es so funktionieren würde.
    Ich habe das in einem anderen Programm das ausschließlich über (x)inetd läuft gefunden. Das Programm ist aber total verbuggt gewesen(127 Fatal Errors, 230 Warnings) und deshalb konnte und wollte ich es nicht ausprobieren.

    Also was muss ich an dem obrigen Programm verändern damit es zusammen mit xinetd funktioniert?

    Vielen Dank schonmal!

    Simon J.