X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=server%2Fstatserv.c;h=e77787965ceba125e0b3ac079a6b8bdaaf1bc40c;hb=c4159a200151b1704984ec01f48356fbc757372d;hp=8e63fb7bc6178c38bead5a446049b7c654cdb5bc;hpb=6517fa53d35512887780fd07de5667940da18a9e;p=yaz-moved-to-github.git diff --git a/server/statserv.c b/server/statserv.c index 8e63fb7..e777879 100644 --- a/server/statserv.c +++ b/server/statserv.c @@ -7,7 +7,16 @@ * Chas Woodfield, Fretwell Downing Datasystem. * * $Log: statserv.c,v $ - * Revision 1.40 1997-09-17 12:10:41 adam + * Revision 1.42 1997-10-27 14:03:02 adam + * Added new member to statserver_options_block, pre_init, which + * specifies a callback to be invoked after command line parsing and + * before the server listens for the first time. + * + * Revision 1.41 1997/09/29 07:19:32 adam + * Server library uses nmem_init/nmem_exit. The log prefix no longer + * includes leading path on NT. + * + * Revision 1.40 1997/09/17 12:10:41 adam * YAZ version 1.4. * * Revision 1.39 1997/09/09 10:10:19 adam @@ -137,6 +146,7 @@ #include #include +#include #ifdef WINDOWS #include #include @@ -176,7 +186,8 @@ static statserv_options_block control_block = { 60, /* idle timeout (minutes) */ 1024*1024, /* maximum PDU size (approx.) to allow */ "default-config", /* configuration name to pass to backend */ - "" /* set user id */ + "", /* set user id */ + NULL }; /* @@ -370,7 +381,7 @@ static void listener(IOCHAN h, int event) iochan_setflags(h, EVENT_INPUT | EVENT_EXCEPT); /* reset listener */ return; } - logf(LOG_DEBUG, "accept ok"); + logf(LOG_DEBUG, "Accept ok"); if (!(new_chan = iochan_create(cs_fileno(new_line), ir_session, EVENT_INPUT))) { @@ -379,16 +390,17 @@ static void listener(IOCHAN h, int event) return; } - logf(LOG_DEBUG, "accept ok 2"); + logf(LOG_DEBUG, "Creating association"); if (!(newas = create_association(new_chan, new_line))) { logf(LOG_FATAL, "Failed to create new assoc."); iochan_destroy(h); return; } - logf(LOG_DEBUG, "accept ok 3"); + logf(LOG_DEBUG, "Setting timeout %d", control_block.idle_timeout); iochan_setdata(new_chan, newas); iochan_settimeout(new_chan, control_block.idle_timeout * 60); + logf(LOG_DEBUG, "Determining client address"); a = cs_addrstr(new_line); logf(LOG_LOG, "Accepted connection from %s", a ? a : "[Unknown]"); /* Now what we need todo is create a new thread with this iochan as @@ -695,12 +707,20 @@ int statserv_main(int argc, char **argv) char *arg; int protocol = control_block.default_proto; + nmem_init (); #ifdef WINDOWS /* We need to initialize the thread list */ ThreadList_Initialize(); #endif /* WINDOWS */ +#ifdef WINDOWS + if ((me = strrchr (argv[0], '\\'))) + me++; + else + me = argv[0]; +#else me = argv[0]; +#endif while ((ret = options("a:iszSl:v:u:c:w:t:k:", argv, argc, &arg)) != -2) { switch (ret) @@ -763,10 +783,6 @@ int statserv_main(int argc, char **argv) } } -#if 0 - log_init(control_block.loglevel, NULL, control_block.logfile); -#endif /* WINDOWS */ - if ((pListener == NULL) && *control_block.default_listen) add_listener(control_block.default_listen, protocol); @@ -775,6 +791,8 @@ int statserv_main(int argc, char **argv) inetd_connection(protocol); else { + if (control_block.pre_init) + (*control_block.pre_init)(&control_block); if (control_block.dynamic) signal(SIGCHLD, catchchld); } @@ -798,7 +816,9 @@ int statserv_main(int argc, char **argv) logf(LOG_LOG, "Entering event loop."); if (pListener == NULL) - return(1); + ret = 1; else - return event_loop(pListener); + ret = event_loop(pListener); + nmem_exit (); + return ret; }