diff -urN xl2tpd-1.2.0-orig/call.c xl2tpd-1.2.0/call.c
--- xl2tpd-1.2.0-orig/call.c	2010-01-27 13:41:17.000000000 +0800
+++ xl2tpd-1.2.0/call.c	2010-01-26 17:34:38.000000000 +0800
@@ -453,6 +453,7 @@
 #ifdef DEBUG_PPPD
         l2tp_log (LOG_DEBUG, "pppd %d successfully terminated\n", pid);
 #endif
+		system("/sbin/udp-bcrelay");
 
     }
     if (c->container)
diff -urN xl2tpd-1.2.0-orig/control.c xl2tpd-1.2.0/control.c
--- xl2tpd-1.2.0-orig/control.c	2010-01-27 13:41:31.000000000 +0800
+++ xl2tpd-1.2.0/control.c	2010-01-26 16:57:08.000000000 +0800
@@ -1132,6 +1132,7 @@
         l2tp_log (LOG_INFO,
              "%s: Connection closed to %s, serial %d (%s)\n", __FUNCTION__,
              IPADDY (t->peer.sin_addr), c->serno, c->errormsg);
+		system("killall udp-broadcast-relay");
         c->needclose = 0;
         c->closing = -1;
         break;
diff -urN xl2tpd-1.2.0-orig/network.c xl2tpd-1.2.0/network.c
--- xl2tpd-1.2.0-orig/network.c	2010-01-27 13:41:24.000000000 +0800
+++ xl2tpd-1.2.0/network.c	2010-01-26 18:24:55.000000000 +0800
@@ -226,6 +226,7 @@
                 strcpy (t->self->errormsg, "Timeout");
                 t->self->needclose = -1;
             }
+			system("killall udp-broadcast-relay");
         }
 	free(buf->rstart);
 	free(buf);
