diff --git a/libs/openzap/src/isdn/Q931ie.c b/libs/openzap/src/isdn/Q931ie.c
index 7755e2cbaa..62312ee654 100644
--- a/libs/openzap/src/isdn/Q931ie.c
+++ b/libs/openzap/src/isdn/Q931ie.c
@@ -2813,7 +2813,6 @@ L3INT Q931Uie_UserUser(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR
 	ie *pIE = &pMsg->UserUser;
 	L3INT Off = 0;
 	L3INT Octet = 0;
-	L3INT x = 0;
 	L3INT l;
 
 	*pIE = 0;
@@ -2821,22 +2820,20 @@ L3INT Q931Uie_UserUser(Q931_TrunkInfo_t *pTrunk, Q931mes_Generic *pMsg, L3UCHAR
 	pie->IEId = IBuf[Octet++];
 
 	/* Octet 2 */
-	l = IBuf[Octet++] - 3; 
+	l = IBuf[Octet++] - 1;
 
 	/* Octet 3 */
-	pie->ProtDisc = IBuf[Octet + Off];
-	Octet++;
+	pie->ProtDisc = IBuf[Octet++];
 
-	for (x = 0; x < l; x++) {
-		pie->User[x] = IBuf[Octet + Off];
-		Off++;
+	for (Off = 0; Off < l; Off++) {
+		pie->User[Off] = IBuf[Octet + Off];
 	}
 
 	Q931SetIE(*pIE, *OOff);
 
 	*IOff = (*IOff) + Octet + Off;
-	*OOff = (*OOff) + sizeof(Q931ie_UserUser) + x - 1;
-	pie->Size = (L3UCHAR)(sizeof(Q931ie_UserUser) + x - 1);
+	*OOff = (*OOff) + sizeof(Q931ie_UserUser) + Off - 1;
+	pie->Size = (L3UCHAR)(sizeof(Q931ie_UserUser) + Off - 1);
 
 	return Q931E_NO_ERROR;
 }
diff --git a/libs/openzap/src/isdn/Q931mes.c b/libs/openzap/src/isdn/Q931mes.c
index b89cf6fbba..8283880288 100644
--- a/libs/openzap/src/isdn/Q931mes.c
+++ b/libs/openzap/src/isdn/Q931mes.c
@@ -89,6 +89,7 @@ L3INT Q931Umes_Alerting(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic
 		case Q931ie_DISPLAY:
 		case Q931ie_SIGNAL:
 		case Q931ie_HIGH_LAYER_COMPATIBILITY:
+		case Q931ie_USER_USER:
 			rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
 			if (rc != Q931E_NO_ERROR) 
 				return rc;
@@ -289,6 +290,7 @@ L3INT Q931Umes_Connect(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic
 		case Q931ie_LOW_LAYER_COMPATIBILITY:
 		case Q931ie_HIGH_LAYER_COMPATIBILITY:
 		case Q931ie_CONNECTED_NUMBER:		/* not actually used, seen while testing BRI PTMP TE */
+		case Q931ie_USER_USER:
 			rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
 			if (rc != Q931E_NO_ERROR) 
 				return rc;
@@ -448,6 +450,7 @@ L3INT Q931Umes_Disconnect(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Gener
 		case Q931ie_DISPLAY:
 		case Q931ie_SIGNAL:
 		case Q931ie_FACILITY:
+		case Q931ie_USER_USER:
 			rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
 			if (rc != Q931E_NO_ERROR) 
 				return rc;
@@ -734,6 +737,7 @@ L3INT Q931Umes_Release(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic
 		case Q931ie_CAUSE:
 		case Q931ie_DISPLAY:
 		case Q931ie_SIGNAL:
+		case Q931ie_USER_USER:
 			rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
 			if (rc != Q931E_NO_ERROR) 
 				return rc;
@@ -799,6 +803,7 @@ L3INT Q931Umes_ReleaseComplete(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_
 		case Q931ie_CAUSE:
 		case Q931ie_DISPLAY:
 		case Q931ie_SIGNAL:
+		case Q931ie_USER_USER:
 			rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
 			if (rc != Q931E_NO_ERROR) 
 				return rc;
@@ -1197,6 +1202,7 @@ L3INT Q931Umes_Setup(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic *m
 		case Q931ie_LOW_LAYER_COMPATIBILITY:
 		case Q931ie_HIGH_LAYER_COMPATIBILITY:
 		case Q931ie_FACILITY:
+		case Q931ie_USER_USER:
 			rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);
 			if (rc != Q931E_NO_ERROR) 
 				return rc;