Annotation of 43BSDTahoe/new/nntp/server/main.c, revision 1.1.1.1

1.1       root        1: #ifndef lint
                      2: static char    *sccsid = "@(#)main.c   1.8     (Berkeley) 7/17/87";
                      3: #endif
                      4: 
                      5: /*
                      6:  *     Network News Transfer Protocol server
                      7:  *
                      8:  *     Phil Lapsley
                      9:  *     University of California, Berkeley
                     10:  *     (Internet: [email protected]; UUCP: ...!ucbvax!phil)
                     11:  */
                     12: 
                     13: #include "common.h"
                     14: #include <sys/socket.h>
                     15: #include <netinet/in.h>
                     16: #include <netdb.h>
                     17: #include <signal.h>
                     18: 
                     19: main()
                     20: {
                     21: 
                     22: #ifdef ALONE   /* If no inetd */
                     23: 
                     24:        int                     sockt, client, length;
                     25:        struct sockaddr_in      from;
                     26:        extern int              reaper();
                     27: 
                     28:        disassoc();
                     29: 
                     30:        /* fd 0-2 should be open and point to / now. */
                     31: 
                     32: #ifdef SYSLOG
                     33: #ifdef BSD_42
                     34:        openlog("nntpd", LOG_PID);                      /* fd 3 */
                     35: #else
                     36:        openlog("nntpd", LOG_PID, SYSLOG);              /* fd 3 */
                     37: #endif
                     38: #endif
                     39: 
                     40: #ifdef FASTFORK
                     41:        num_groups = read_groups();     /* Read active file now (fd 4) */
                     42:                                        /* and then do it every */
                     43:        set_timer();                    /* so often later */
                     44: #endif
                     45: 
                     46:        sockt = get_socket();           /* should be fd 4 or 5 */
                     47: 
                     48:        (void) signal(SIGCHLD, reaper);
                     49: 
                     50:        if (listen(sockt, SOMAXCONN) < 0) {
                     51: #ifdef SYSLOG
                     52:                syslog(LOG_ERR, "main: listen: %m");
                     53: #endif
                     54:                exit(1);
                     55:        }
                     56: 
                     57:        for (;;) {
                     58:                length = sizeof (from);
                     59:                client = accept(sockt, &from, &length);
                     60:                if (client < 0) {
                     61: #ifdef SYSLOG
                     62:                        if (errno != EINTR)
                     63:                                syslog(LOG_ERR, "accept: %m\n");
                     64: #endif
                     65:                        continue;
                     66:                }
                     67: 
                     68:                switch (fork()) {
                     69:                case    -1:
                     70: #ifdef SYSLOG
                     71:                                syslog(LOG_ERR, "fork: %m\n");
                     72: #endif
                     73:                                (void) close(client);
                     74:                                break;
                     75: 
                     76:                case    0:      (void) close(sockt);
                     77:                                make_stdio(client);
                     78:                                serve();
                     79:                                break;
                     80: 
                     81:                default:        (void) close(client);
                     82:                                break;
                     83:                }
                     84:        }
                     85: 
                     86: #else          /* We have inetd */
                     87: 
                     88:        serve();
                     89: 
                     90: #endif
                     91: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.