diff --git a/src/backend.cmod b/src/backend.cmod
index cbb86a9c4165ab7f2387ad58f5b4b716209c8767..4cf8ec37f685996f24cfbb889d31f51199e6d200 100644
--- a/src/backend.cmod
+++ b/src/backend.cmod
@@ -5,7 +5,7 @@
 */
 
 /*
- * $Id: backend.cmod,v 1.162 2005/01/20 18:26:46 grubba Exp $
+ * $Id: backend.cmod,v 1.163 2005/01/20 19:13:36 grubba Exp $
  *
  * Backend object.
  */
@@ -1866,6 +1866,17 @@ PIKECLASS Backend
     if (old != new) {
       if (box->fd >= 0) update_fd_set (old, box->fd, box->events, 0);
       remove_fd_box (box);
+      if (box->next) {
+	/* The box is active in the old backend. Unlink it. */
+	struct fd_callback_box *pred = box->next;
+	/* Find the predecessor. */
+	while (pred->next != box) {
+	  pred = pred->next;
+	}
+	pred->next = box->next;
+	box->next = NULL;
+	if (box->ref_obj) free_object(box->ref_obj);
+      }
       box->backend = new;
       add_fd_box (box);
       if (box->fd >= 0) update_fd_set (new, box->fd, 0, box->events);