*
* Known contributors to this file:
* Dave Pare, 1994
- * Markus Armbruster, 2005-2009
+ * Markus Armbruster, 2005-2012
*/
#include <config.h>
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_BUFSIZE, idle_timeout);
+ lp->iop = io_open(s, IO_READ | IO_WRITE, IO_BUFSIZE);
if (!lp->iop) {
free(lp);
return NULL;
struct player *
player_delete(struct player *lp)
{
+ struct timeval timeout;
struct player *back;
- back = (struct player *)lp->queue.q_back;
- if (back)
- emp_remque(&lp->queue);
if (lp->iop) {
/* it's a real player */
- io_close(lp->iop);
+ io_timeout(&timeout, player->curup + minutes(max_idle));
+ io_close(lp->iop, &timeout);
lp->iop = NULL;
}
+ back = (struct player *)lp->queue.q_back;
+ if (back)
+ emp_remque(&lp->queue);
free(lp);
/* XXX may need to free bigmap here */
return back;