ussd: fix GSUP memleaks in rx_proc_ss_{req,error}()

Also take a chance to use a more suitable error cause value.

Change-Id: I22ba5ad470989b7e8ba8fe2be170eac4adcb48c5
diff --git a/src/hlr_ussd.c b/src/hlr_ussd.c
index 35b74b6..8d5237f 100644
--- a/src/hlr_ussd.c
+++ b/src/hlr_ussd.c
@@ -631,7 +631,8 @@
 		if (!ss) {
 			LOGP(DSS, LOGL_ERROR, "%s/0x%08x: CONTINUE for unknown SS session\n",
 				gsup->imsi, gsup->session_id);
-			osmo_gsup_req_respond_err(gsup_req, GMM_CAUSE_INV_MAND_INFO, "CONTINUE for unknown SS session");
+			osmo_gsup_req_respond_err(gsup_req, GMM_CAUSE_MSGT_INCOMP_P_STATE,
+						  "CONTINUE for unknown SS session");
 			return;
 		}
 
@@ -652,6 +653,8 @@
 		if (!ss) {
 			LOGP(DSS, LOGL_ERROR, "%s/0x%08x: END for unknown SS session\n",
 				gsup->imsi, gsup->session_id);
+			osmo_gsup_req_respond_err(gsup_req, GMM_CAUSE_MSGT_INCOMP_P_STATE,
+						  "END for unknown SS session");
 			return;
 		}
 
@@ -682,4 +685,5 @@
 {
 	LOGP(DSS, LOGL_NOTICE, "%s/0x%08x: Process SS ERROR (%s)\n", req->gsup.imsi, req->gsup.session_id,
 		osmo_gsup_session_state_name(req->gsup.session_state));
+	osmo_gsup_req_free(req);
 }