libmsc/gsm_04_11.c: cosmetic: restructure gsm411_mm_send()

Change-Id: I22e99f40ab2252a0b716969091e4d24b3b4268a2
diff --git a/src/libmsc/gsm_04_11.c b/src/libmsc/gsm_04_11.c
index cc9ce18..c5c3036 100644
--- a/src/libmsc/gsm_04_11.c
+++ b/src/libmsc/gsm_04_11.c
@@ -216,22 +216,20 @@
 	switch (msg_type) {
 	case GSM411_MMSMS_EST_REQ:
 		rc = gsm411_mmsms_est_req(trans);
-		msgb_free(msg); /* upper layer does not free msg */
 		break;
 	case GSM411_MMSMS_DATA_REQ:
 		rc = gsm411_cp_sendmsg(msg, trans, cp_msg_type);
-		break;
+		return rc; /* gsm411_cp_sendmsg() takes msg ownership */
 	case GSM411_MMSMS_REL_REQ:
 		LOG_TRANS(trans, LOGL_DEBUG, "Got MMSMS_REL_REQ, destroying transaction.\n");
-		msgb_free(msg);
 		trans_free(trans);
 		break;
 	default:
 		LOG_TRANS(trans, LOGL_NOTICE, "Unhandled MMCCSMS msg 0x%x\n", msg_type);
-		msgb_free(msg);
 		rc = -EINVAL;
 	}
 
+	msgb_free(msg);
 	return rc;
 }