X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=server%2Fstatserv.c;h=a0e9e14b091cbe7860f98be3275a578bfbf11f4e;hb=281bd093d547534ce4e667214a1881a84a9f3227;hp=f536f025794fab2b1fc56ae7750a0f3421b6beee;hpb=0a3a8b6400167c2dfd6e6b5f135f6ad4783e554c;p=yaz-moved-to-github.git diff --git a/server/statserv.c b/server/statserv.c index f536f02..a0e9e14 100644 --- a/server/statserv.c +++ b/server/statserv.c @@ -4,7 +4,16 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: statserv.c,v $ - * Revision 1.2 1995-03-14 10:28:03 quinn + * Revision 1.5 1995-03-15 08:37:45 quinn + * Now we're pretty much set for nonblocking I/O. + * + * Revision 1.4 1995/03/14 16:59:48 quinn + * Bug-fixes + * + * Revision 1.3 1995/03/14 11:30:15 quinn + * Works better now. + * + * Revision 1.2 1995/03/14 10:28:03 quinn * More work on demo server. * * Revision 1.1 1995/03/10 18:22:45 quinn @@ -29,6 +38,8 @@ static char *me = ""; +#define DEFAULT_LISTENER "tcp:localhost:9999" + /* * handle incoming connect requests. */ @@ -46,7 +57,8 @@ void listener(IOCHAN h, int event) fprintf(stderr, "cs_listen failed.\n"); exit(1); } - iochan_setflags(h, EVENT_OUTPUT); /* set us up for accepting */ + iochan_setevent(h, EVENT_OUTPUT); + iochan_setflags(h, EVENT_OUTPUT | EVENT_EXCEPT); /* set up for acpt */ } else if (event == EVENT_OUTPUT) { @@ -69,8 +81,8 @@ void listener(IOCHAN h, int event) fprintf(stderr, "Failed to create new assoc.\n"); exit(1); } - iochan_setdata(h, newas); - iochan_setflags(h, EVENT_INPUT); /* reset for listening */ + iochan_setdata(new_chan, newas); + iochan_setflags(h, EVENT_INPUT | EVENT_EXCEPT); /* reset for listen */ } else { @@ -90,6 +102,7 @@ void add_listener(char *where) void *ap; IOCHAN lst; + fprintf(stderr, "Adding listener on %s\n", where); if (!where || sscanf(where, "%[^:]:%s", mode, addr) != 2) { fprintf(stderr, "%s: Address format: ('tcp'|'osi')':'
.\n", @@ -132,7 +145,8 @@ void add_listener(char *where) perror(where); exit(1); } - if (!(lst = iochan_create(cs_fileno(l), listener, EVENT_INPUT))) + if (!(lst = iochan_create(cs_fileno(l), listener, EVENT_INPUT | + EVENT_EXCEPT))) { fprintf(stderr, "Failed to create IOCHAN-type\n"); exit(1); @@ -145,6 +159,7 @@ int main(int argc, char **argv) int ret, listeners = 0; char *arg; + me = argv[0]; while ((ret = options("l:", argv, argc, &arg)) != -2) switch (ret) { @@ -155,9 +170,6 @@ int main(int argc, char **argv) exit(1); } if (!listeners) - { - fprintf(stderr, "%s: Must specify at least one listener.\n", me); - exit(1); - } + add_listener(DEFAULT_LISTENER); return event_loop(); }