Free each fl1h (sysmo-bts' layer 1 handler) when closing BTS<->PCU socket
diff --git a/src/sysmo_l1_if.c b/src/sysmo_l1_if.c
index 68881bf..2e1cb76 100644
--- a/src/sysmo_l1_if.c
+++ b/src/sysmo_l1_if.c
@@ -345,11 +345,12 @@
 	return fl1h;
 }
 
-static int l1if_close_pdch(void *obj)
+int l1if_close_pdch(void *obj)
 {
 	struct femtol1_hdl *fl1h = obj;
 	if (fl1h)
 		l1if_transport_close(MQ_PDTCH_WRITE, fl1h);
+	talloc_free(fl1h);
 	return 0;
 }
 
diff --git a/src/sysmo_sock.cpp b/src/sysmo_sock.cpp
index c456595..1982472 100644
--- a/src/sysmo_sock.cpp
+++ b/src/sysmo_sock.cpp
@@ -39,6 +39,10 @@
 
 extern void *tall_pcu_ctx;
 
+extern "C" {
+int l1if_close_pdch(void *obj);
+}
+
 /*
  * SYSMO-PCU socket functions
  */
@@ -95,6 +99,10 @@
 
 	/* disable all slots, kick all TBFs */
 	for (trx = 0; trx < 8; trx++) {
+		if (bts->trx[trx].fl1h) {
+			l1if_close_pdch(bts->trx[trx].fl1h);
+			bts->trx[trx].fl1h = NULL;
+		}
 		for (ts = 0; ts < 8; ts++)
 			bts->trx[trx].pdch[ts].enable = 0;
 		for (tfi = 0; tfi < 32; tfi++) {