Index: squid/src/pconn.c diff -c squid/src/pconn.c:1.31.2.1 squid/src/pconn.c:1.31.2.2 *** squid/src/pconn.c:1.31.2.1 Sun Dec 14 05:30:36 2003 --- squid/src/pconn.c Mon Dec 15 16:38:43 2003 *************** *** 95,105 **** pconnRemoveFD(struct _pconn *p, int fd) { int i; ! for (i = 0; i < p->nfds; i++) { if (p->fds[i] == fd) break; } ! assert(i < p->nfds); debug(48, 3) ("pconnRemoveFD: found FD %d at index %d\n", fd, i); for (; i < p->nfds - 1; i++) p->fds[i] = p->fds[i + 1]; --- 95,105 ---- pconnRemoveFD(struct _pconn *p, int fd) { int i; ! for (i = p->nfds - 1; i >= 0; i--) { if (p->fds[i] == fd) break; } ! assert(i >= 0); debug(48, 3) ("pconnRemoveFD: found FD %d at index %d\n", fd, i); for (; i < p->nfds - 1; i++) p->fds[i] = p->fds[i + 1]; *************** *** 235,241 **** if (hptr != NULL) { p = (struct _pconn *) hptr; assert(p->nfds > 0); ! fd = p->fds[0]; pconnRemoveFD(p, fd); commSetSelect(fd, COMM_SELECT_READ, NULL, NULL, 0); commSetTimeout(fd, -1, NULL, NULL); --- 235,241 ---- if (hptr != NULL) { p = (struct _pconn *) hptr; assert(p->nfds > 0); ! fd = p->fds[p->nfds - 1]; pconnRemoveFD(p, fd); commSetSelect(fd, COMM_SELECT_READ, NULL, NULL, 0); commSetTimeout(fd, -1, NULL, NULL);