diff --git a/src/libmsc/osmo_msc.c b/src/libmsc/osmo_msc.c
index 323baf9..01e44f3 100644
--- a/src/libmsc/osmo_msc.c
+++ b/src/libmsc/osmo_msc.c
@@ -47,7 +47,7 @@
 		gsm411_sapi_n_reject(conn);
 }
 
-static void subscr_conn_bump(struct gsm_subscriber_connection *conn)
+static void subscr_conn_release_when_unused(struct gsm_subscriber_connection *conn)
 {
 	if (!conn)
 		return;
@@ -55,12 +55,12 @@
 		return;
 	if (!(conn->conn_fsm->state == SUBSCR_CONN_S_ACCEPTED
 	      || conn->conn_fsm->state == SUBSCR_CONN_S_COMMUNICATING)) {
-		DEBUGP(DMM, "%s: bump: conn still being established (%s)\n",
-		       vlr_subscr_name(conn->vsub),
+		DEBUGP(DMM, "%s: %s: conn still being established (%s)\n",
+		       vlr_subscr_name(conn->vsub), __func__,
 		       osmo_fsm_inst_state_name(conn->conn_fsm));
 		return;
 	}
-	osmo_fsm_inst_dispatch(conn->conn_fsm, SUBSCR_CONN_E_BUMP, NULL);
+	osmo_fsm_inst_dispatch(conn->conn_fsm, SUBSCR_CONN_E_RELEASE_WHEN_UNUSED, NULL);
 }
 
 /* receive a Level 3 Complete message and return MSC_CONN_ACCEPT or
@@ -71,8 +71,7 @@
 	msc_subscr_conn_get(conn, MSC_CONN_USE_COMPL_L3);
 	gsm0408_dispatch(conn, msg);
 
-	/* Bump whether the conn wants to be closed */
-	subscr_conn_bump(conn);
+	subscr_conn_release_when_unused(conn);
 
 	/* If this should be kept, the conn->conn_fsm has placed a use_count */
 	msc_subscr_conn_put(conn, MSC_CONN_USE_COMPL_L3);
@@ -106,8 +105,7 @@
 	msc_subscr_conn_get(conn, MSC_CONN_USE_DTAP);
 	gsm0408_dispatch(conn, msg);
 
-	/* Bump whether the conn wants to be closed */
-	subscr_conn_bump(conn);
+	subscr_conn_release_when_unused(conn);
 	msc_subscr_conn_put(conn, MSC_CONN_USE_DTAP);
 }
 
diff --git a/src/libmsc/subscr_conn.c b/src/libmsc/subscr_conn.c
index 512f512..8c424c5 100644
--- a/src/libmsc/subscr_conn.c
+++ b/src/libmsc/subscr_conn.c
@@ -40,7 +40,7 @@
 	OSMO_VALUE_STRING(SUBSCR_CONN_E_START),
 	OSMO_VALUE_STRING(SUBSCR_CONN_E_ACCEPTED),
 	OSMO_VALUE_STRING(SUBSCR_CONN_E_COMMUNICATING),
-	OSMO_VALUE_STRING(SUBSCR_CONN_E_BUMP),
+	OSMO_VALUE_STRING(SUBSCR_CONN_E_RELEASE_WHEN_UNUSED),
 	OSMO_VALUE_STRING(SUBSCR_CONN_E_MO_CLOSE),
 	OSMO_VALUE_STRING(SUBSCR_CONN_E_CN_CLOSE),
 	{ 0, NULL }
@@ -130,21 +130,22 @@
 		LOGPFSML(fi, LOGL_DEBUG, "received_cm_service_request = true\n");
 	}
 
-	osmo_fsm_inst_dispatch(fi, SUBSCR_CONN_E_BUMP, data);
+	osmo_fsm_inst_dispatch(fi, SUBSCR_CONN_E_RELEASE_WHEN_UNUSED, data);
 }
 
-static void subscr_conn_fsm_bump(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+static void subscr_conn_fsm_release_when_unused(struct osmo_fsm_inst *fi, uint32_t event, void *data)
 {
 	struct gsm_subscriber_connection *conn = fi->priv;
 	struct gsm_trans *trans;
 
 	if (conn->silent_call) {
-		LOGPFSML(fi, LOGL_DEBUG, "bump: silent call still active\n");
+		LOGPFSML(fi, LOGL_DEBUG, "%s: silent call still active\n", __func__);
 		return;
 	}
 
 	if (conn->received_cm_service_request) {
-		LOGPFSML(fi, LOGL_DEBUG, "bump: still awaiting first request after a CM Service Request\n");
+		LOGPFSML(fi, LOGL_DEBUG, "%s: still awaiting first request after a CM Service Request\n",
+			 __func__);
 		return;
 	}
 
@@ -152,8 +153,8 @@
 		struct subscr_request *sr;
 		if (!log_check_level(fi->fsm->log_subsys, LOGL_DEBUG)) {
 			llist_for_each_entry(sr, &conn->vsub->cs.requests, entry) {
-				LOGPFSML(fi, LOGL_DEBUG, "bump: still active: %s\n",
-					 sr->label);
+				LOGPFSML(fi, LOGL_DEBUG, "%s: still active: %s\n",
+					 __func__, sr->label);
 			}
 		}
 		return;
@@ -161,12 +162,12 @@
 
 	if ((trans = trans_has_conn(conn))) {
 		LOGPFSML(fi, LOGL_DEBUG,
-			 "bump: connection still has active transaction: %s\n",
-			 gsm48_pdisc_name(trans->protocol));
+			 "%s: connection still has active transaction: %s\n",
+			 __func__, gsm48_pdisc_name(trans->protocol));
 		return;
 	}
 
-	LOGPFSML(fi, LOGL_DEBUG, "bump: releasing conn\n");
+	LOGPFSML(fi, LOGL_DEBUG, "%s: releasing conn\n", __func__);
 	osmo_fsm_inst_state_chg(fi, SUBSCR_CONN_S_RELEASED, 0, 0);
 }
 
@@ -183,8 +184,8 @@
 		osmo_fsm_inst_state_chg(fi, SUBSCR_CONN_S_COMMUNICATING, 0, 0);
 		return;
 
-	case SUBSCR_CONN_E_BUMP:
-		subscr_conn_fsm_bump(fi, event, data);
+	case SUBSCR_CONN_E_RELEASE_WHEN_UNUSED:
+		subscr_conn_fsm_release_when_unused(fi, event, data);
 		return;
 
 	default:
@@ -203,8 +204,8 @@
 		/* no-op */
 		return;
 
-	case SUBSCR_CONN_E_BUMP:
-		subscr_conn_fsm_bump(fi, event, data);
+	case SUBSCR_CONN_E_RELEASE_WHEN_UNUSED:
+		subscr_conn_fsm_release_when_unused(fi, event, data);
 		return;
 
 	default:
@@ -266,7 +267,7 @@
 		.name = OSMO_STRINGIFY(SUBSCR_CONN_S_ACCEPTED),
 		/* allow everything to release for any odd behavior */
 		.in_event_mask = S(SUBSCR_CONN_E_COMMUNICATING) |
-		                 S(SUBSCR_CONN_E_BUMP) |
+		                 S(SUBSCR_CONN_E_RELEASE_WHEN_UNUSED) |
 				 S(SUBSCR_CONN_E_ACCEPTED) |
 				 S(SUBSCR_CONN_E_MO_CLOSE) |
 				 S(SUBSCR_CONN_E_CN_CLOSE),
@@ -278,7 +279,7 @@
 	[SUBSCR_CONN_S_COMMUNICATING] = {
 		.name = OSMO_STRINGIFY(SUBSCR_CONN_S_COMMUNICATING),
 		/* allow everything to release for any odd behavior */
-		.in_event_mask = S(SUBSCR_CONN_E_BUMP) |
+		.in_event_mask = S(SUBSCR_CONN_E_RELEASE_WHEN_UNUSED) |
 				 S(SUBSCR_CONN_E_ACCEPTED) |
 				 S(SUBSCR_CONN_E_COMMUNICATING) |
 				 S(SUBSCR_CONN_E_MO_CLOSE) |
