]> git.pond.sub.org Git - empserver/blobdiff - src/lib/player/accept.c
Reimplement max_idle without a separate thread
[empserver] / src / lib / player / accept.c
index 160ca6480195cba28d84cfa66803ba5139a46f94..310684946c73d31add64e1e8187c43cc04ebf22d 100644 (file)
@@ -72,14 +72,18 @@ struct player *
 player_new(int s)
 {
     struct player *lp;
+    struct timeval idle_timeout;
 
     lp = malloc(sizeof(struct player));
     if (!lp)
       return NULL;
     memset(lp, 0, sizeof(struct player));
+    idle_timeout.tv_sec = max_idle * 60;
+    idle_timeout.tv_usec = 0 ;
     if (s >= 0) {
        /* real player, not dummy created by update and market update */
-       lp->iop = io_open(s, IO_READ | IO_WRITE | IO_NBLOCK, IO_BUFSIZE);
+       lp->iop = io_open(s, IO_READ | IO_WRITE | IO_NBLOCK, IO_BUFSIZE,
+                         idle_timeout);
        if (!lp->iop) {
            free(lp);
            return NULL;
@@ -173,7 +177,7 @@ player_accept(void *unused)
     sap = malloc(player_addrlen);
 
     while (1) {
-       empth_select(s, EMPTH_FD_READ);
+       empth_select(s, EMPTH_FD_READ, NULL);
        len = player_addrlen;
        ns = accept(s, sap, &len);
        /* FIXME accept() can block on some systems (RST after select() reports ready) */