diff --git a/src/libmsc/gsm_04_11.c b/src/libmsc/gsm_04_11.c
index 0cd1b65..88a6685 100644
--- a/src/libmsc/gsm_04_11.c
+++ b/src/libmsc/gsm_04_11.c
@@ -280,8 +280,7 @@
 }
 
 static int sms_route_mt_sms(struct gsm_subscriber_connection *conn,
-			    struct gsm_sms *gsms, uint8_t sms_mti,
-			    bool *deferred)
+			    struct gsm_sms *gsms, uint8_t sms_mti)
 {
 	int rc;
 
@@ -295,7 +294,7 @@
 	 * delivery of the SMS.
 	 */
 	if (smpp_first) {
-		rc = smpp_try_deliver(gsms, conn, deferred);
+		rc = smpp_try_deliver(gsms, conn);
 		if (rc == GSM411_RP_CAUSE_MO_NUM_UNASSIGNED)
 			/* unknown subscriber, try local */
 			goto try_local;
@@ -324,7 +323,7 @@
 			return GSM411_RP_CAUSE_MO_NUM_UNASSIGNED;
 		}
 
-		rc = smpp_try_deliver(gsms, conn, deferred);
+		rc = smpp_try_deliver(gsms, conn);
 		if (rc == GSM411_RP_CAUSE_MO_NUM_UNASSIGNED) {
 			rate_ctr_inc(&conn->network->msc_ctrs->ctr[MSC_CTR_SMS_NO_RECEIVER]);
 		} else if (rc < 0) {
@@ -365,7 +364,7 @@
 /* process an incoming TPDU (called from RP-DATA)
  * return value > 0: RP CAUSE for ERROR; < 0: silent error; 0 = success */
 static int gsm340_rx_tpdu(struct gsm_trans *trans, struct msgb *msg,
-			  uint32_t gsm411_msg_ref, bool *deferred)
+			  uint32_t gsm411_msg_ref)
 {
 	struct gsm_subscriber_connection *conn = trans->conn;
 	uint8_t *smsp = msgb_sms(msg);
@@ -486,10 +485,9 @@
 	/* FIXME: This looks very wrong */
 	send_signal(0, NULL, gsms, 0);
 
-	rc = sms_route_mt_sms(conn, gsms, sms_mti, deferred);
+	rc = sms_route_mt_sms(conn, gsms, sms_mti);
 out:
-	if (!deferred)
-		sms_free(gsms);
+	sms_free(gsms);
 
 	return rc;
 }
@@ -542,7 +540,6 @@
 			  uint8_t dst_len, uint8_t *dst,
 			  uint8_t tpdu_len, uint8_t *tpdu)
 {
-	bool deferred = false;
 	int rc = 0;
 
 	if (src_len && src)
@@ -559,8 +556,8 @@
 
 	DEBUGP(DLSMS, "DST(%u,%s)\n", dst_len, osmo_hexdump(dst, dst_len));
 
-	rc = gsm340_rx_tpdu(trans, msg, rph->msg_ref, &deferred);
-	if (rc == 0 && !deferred)
+	rc = gsm340_rx_tpdu(trans, msg, rph->msg_ref);
+	if (rc == 0)
 		return gsm411_send_rp_ack(trans, rph->msg_ref);
 	else if (rc > 0)
 		return gsm411_send_rp_error(trans, rph->msg_ref, rc);
diff --git a/src/libmsc/smpp_openbsc.c b/src/libmsc/smpp_openbsc.c
index 67e6638..bf63f6b 100644
--- a/src/libmsc/smpp_openbsc.c
+++ b/src/libmsc/smpp_openbsc.c
@@ -501,7 +501,6 @@
 	osmo_timer_del(&cmd->response_timer);
 	llist_del(&cmd->list);
 	vlr_subscr_put(cmd->vsub);
-	sms_free(cmd->sms);
 	talloc_free(cmd);
 }
 
@@ -524,15 +523,14 @@
 		goto out;
 	}
 
-	trans = trans_find_by_id(conn, GSM48_PDISC_SMS,
-				 cmd->sms->gsm411.transaction_id);
+	trans = trans_find_by_id(conn, GSM48_PDISC_SMS, cmd->gsm411_trans_id);
 	if (!trans) {
 		LOGP(DSMPP, LOGL_ERROR, "GSM transaction %u is gone\n",
-		     cmd->sms->gsm411.transaction_id);
+		     cmd->gsm411_trans_id);
 		goto out;
 	}
 
-	gsm411_send_rp_ack(trans, cmd->sms->gsm411.msg_ref);
+	gsm411_send_rp_ack(trans, cmd->gsm411_msg_ref);
 out:
 	smpp_cmd_free(cmd);
 }
@@ -549,18 +547,17 @@
 		goto out;
 	}
 
-	trans = trans_find_by_id(conn, GSM48_PDISC_SMS,
-				 cmd->sms->gsm411.transaction_id);
+	trans = trans_find_by_id(conn, GSM48_PDISC_SMS, cmd->gsm411_trans_id);
 	if (!trans) {
 		LOGP(DSMPP, LOGL_ERROR, "GSM transaction %u is gone\n",
-		     cmd->sms->gsm411.transaction_id);
+		     cmd->gsm411_trans_id);
 		goto out;
 	}
 
 	if (smpp_to_gsm411_err(status, &gsm411_cause) < 0)
 		gsm411_cause = GSM411_RP_CAUSE_MO_NET_OUT_OF_ORDER;
 
-	gsm411_send_rp_error(trans, cmd->sms->gsm411.msg_ref, gsm411_cause);
+	gsm411_send_rp_error(trans, cmd->gsm411_msg_ref, gsm411_cause);
 out:
 	smpp_cmd_free(cmd);
 }
@@ -572,7 +569,7 @@
 
 static int smpp_cmd_enqueue(struct osmo_esme *esme,
 			    struct vlr_subscr *vsub, struct gsm_sms *sms,
-			    uint32_t sequence_number, bool *deferred)
+			    uint32_t sequence_number)
 {
 	struct osmo_smpp_cmd *cmd;
 
@@ -581,7 +578,8 @@
 		return -1;
 
 	cmd->sequence_nr	= sequence_number;
-	cmd->sms		= sms;
+	cmd->gsm411_msg_ref	= sms->gsm411.msg_ref;
+	cmd->gsm411_trans_id	= sms->gsm411.transaction_id;
 	cmd->vsub		= vlr_subscr_get(vsub);
 
 	/* FIXME: No predefined value for this response_timer as specified by
@@ -592,7 +590,6 @@
 	osmo_timer_setup(&cmd->response_timer, smpp_deliver_sm_cb, cmd);
 	osmo_timer_schedule(&cmd->response_timer, 5, 0);
 	llist_add_tail(&cmd->list, &esme->smpp_cmd_list);
-	*deferred = true;
 
 	return 0;
 }
@@ -610,8 +607,7 @@
 }
 
 static int deliver_to_esme(struct osmo_esme *esme, struct gsm_sms *sms,
-			   struct gsm_subscriber_connection *conn,
-			   bool *deferred)
+			   struct gsm_subscriber_connection *conn)
 {
 	struct deliver_sm_t deliver;
 	int mode, ret;
@@ -693,7 +689,7 @@
 		return ret;
 
 	return smpp_cmd_enqueue(esme, conn->vsub, sms,
-				deliver.sequence_number, deferred);
+				deliver.sequence_number);
 }
 
 static struct smsc *g_smsc;
@@ -704,7 +700,7 @@
 }
 
 int smpp_try_deliver(struct gsm_sms *sms,
-		     struct gsm_subscriber_connection *conn, bool *deferred)
+		     struct gsm_subscriber_connection *conn)
 {
 	struct osmo_esme *esme;
 	struct osmo_smpp_addr dst;
@@ -717,7 +713,7 @@
 
 	rc = smpp_route(g_smsc, &dst, &esme);
 	if (!rc)
-		rc = deliver_to_esme(esme, sms, conn, deferred);
+		rc = deliver_to_esme(esme, sms, conn);
 
 	return rc;
 }
diff --git a/src/libmsc/smpp_smsc.h b/src/libmsc/smpp_smsc.h
index fded236..0f1d35c 100644
--- a/src/libmsc/smpp_smsc.h
+++ b/src/libmsc/smpp_smsc.h
@@ -89,8 +89,9 @@
 struct osmo_smpp_cmd {
 	struct llist_head	list;
 	struct vlr_subscr	*vsub;
-	struct gsm_sms		*sms;
 	uint32_t		sequence_nr;
+	uint32_t		gsm411_msg_ref;
+	uint8_t			gsm411_trans_id;
 	struct osmo_timer_list	response_timer;
 };
 
@@ -161,5 +162,5 @@
 int smpp_route_smpp_first(struct gsm_sms *sms,
 			    struct gsm_subscriber_connection *conn);
 int smpp_try_deliver(struct gsm_sms *sms,
-		     struct gsm_subscriber_connection *conn, bool *deferred);
+		     struct gsm_subscriber_connection *conn);
 #endif
