X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=server%2Fstatserv.c;h=64477ead920cf4d8cba60cbdee7c6ff41e74c8e2;hb=62046e165c034a360b9ec8b5213bbb0e4b8fbca8;hp=03822efe4fe8c0edb6602dadf85ac863f14f07a0;hpb=9006495b0949ec4c474866cb69376653540b1aab;p=yaz-moved-to-github.git diff --git a/server/statserv.c b/server/statserv.c index 03822ef..64477ea 100644 --- a/server/statserv.c +++ b/server/statserv.c @@ -7,7 +7,14 @@ * Chas Woodfield, Fretwell Downing Datasystem. * * $Log: statserv.c,v $ - * Revision 1.39 1997-09-09 10:10:19 adam + * 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 * Another MSV5.0 port. Changed projects to include proper * library/include paths. * Server starts server in test-mode when no options are given. @@ -134,6 +141,7 @@ #include #include +#include #ifdef WINDOWS #include #include @@ -367,7 +375,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))) { @@ -376,16 +384,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 @@ -614,32 +623,24 @@ static void add_listener(char *where, int what) if (!where || sscanf(where, "%[^:]:%s", mode, addr) != 2) { - fprintf(stderr, "%s: Address format: ('tcp'|'osi')':'
.\n", - me); + logf (LOG_WARN, "%s: Address format: ('tcp'|'osi')':'
", me); + return; } if (!strcmp(mode, "tcp")) - { - if (!(ap = tcpip_strtoaddr(addr))) - { - fprintf(stderr, "Address resolution failed for TCP.\n"); - } type = tcpip_type; - } else if (!strcmp(mode, "osi")) { #ifdef USE_XTIMOSI - if (!(ap = mosi_strtoaddr(addr))) - { - fprintf(stderr, "Address resolution failed for TCP.\n"); - } type = mosi_type; #else - fprintf(stderr, "OSI Transport not allowed by configuration.\n"); + logf (LOG_WARN, "OSI Transport not allowed by configuration."); + return; #endif } else { - fprintf(stderr, "You must specify either 'osi:' or 'tcp:'.\n"); + logf (LOG_WARN, "You must specify either 'osi:' or 'tcp:'"); + return; } logf(LOG_LOG, "Adding %s %s listener on %s", control_block.dynamic ? "dynamic" : "static", @@ -648,6 +649,13 @@ static void add_listener(char *where, int what) { logf(LOG_FATAL|LOG_ERRNO, "Failed to create listener"); } + ap = cs_straddr (l, addr); + if (!ap) + { + fprintf(stderr, "Address resolution failed.\n"); + cs_close (l); + return; + } if (cs_bind(l, ap, CS_SERVER) < 0) { logf(LOG_FATAL|LOG_ERRNO, "Failed to bind to %s", where); @@ -693,12 +701,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) @@ -796,7 +812,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; }