From ccb26232551f5cf6abbddd0cfe175bc32ddf20f1 Mon Sep 17 00:00:00 2001 From: Michael Poole Date: Mon, 4 Jan 2010 00:33:41 +0000 Subject: [PATCH] Attempt to fix SF bug #2874316 by invalidating a file descriptor that the system claims is bad. git-svn-id: file:///home/klmitch/undernet-ircu/undernet-ircu-svn/ircu2/branches/u2_10_12_branch@1931 c9e4aea6-c8fd-4c43-8297-357d70d61c8c --- ChangeLog | 5 +++++ ircd/list.c | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/ChangeLog b/ChangeLog index 11e18d3..20e3c8a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2010-01-03 Michael Poole + + * ircd/s_bsd.c (client_sock_callback): Invalidate cli_fd() when we + receive an EBADF error. + 2010-01-03 Michael Poole * ircd/engine_select.c (engine_loop): Remove a bogus assert() that diff --git a/ircd/list.c b/ircd/list.c index d304e16..f6a1132 100644 --- a/ircd/list.c +++ b/ircd/list.c @@ -427,6 +427,9 @@ void verify_client_list(void) */ struct SLink* make_link(void) { +#if 1 + struct SLink* lp = (struct SLink*) MyMalloc(sizeof(struct SLink)); +#else struct SLink* lp = slinkFreeList; if (lp) slinkFreeList = lp->next; @@ -434,6 +437,7 @@ struct SLink* make_link(void) lp = (struct SLink*) MyMalloc(sizeof(struct SLink)); links.alloc++; } +#endif assert(0 != lp); links.inuse++; memset(lp, 0, sizeof(*lp)); @@ -446,8 +450,12 @@ struct SLink* make_link(void) void free_link(struct SLink* lp) { if (lp) { +#if 1 + MyFree(lp); +#else lp->next = slinkFreeList; slinkFreeList = lp; +#endif links.inuse--; } } -- 2.20.1