ensure we release memory for all received msgb.
diff --git a/src/gsup_server.c b/src/gsup_server.c
index 15af9c8..f5515e3 100644
--- a/src/gsup_server.c
+++ b/src/gsup_server.c
@@ -60,9 +60,9 @@
 		rc = ipa_server_conn_ccm(conn, msg);
 		if (rc < 0) {
 			/* conn is already invalid here! */
-			msgb_free(msg);
 			return -1;
 		}
+		msgb_free(msg);
 		return 0;
 	}
 
diff --git a/src/hlr.c b/src/hlr.c
index 2a93d7d..054558e 100644
--- a/src/hlr.c
+++ b/src/hlr.c
@@ -65,6 +65,7 @@
 			gsup.message_type);
 		break;
 	}
+	msgb_free(msg);
 	return 0;
 }