]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Extend 5ESS Setup message parser to handle Display IE in codeset 7
authorStefan Knoblich <stkn@freeswitch.org>
Tue, 9 Sep 2008 20:19:03 +0000 (20:19 +0000)
committerStefan Knoblich <stkn@freeswitch.org>
Tue, 9 Sep 2008 20:19:03 +0000 (20:19 +0000)
git-svn-id: http://svn.openzap.org/svn/openzap/trunk@550 a93c3328-9c30-0410-af19-c9cd2b2d52af

libs/openzap/src/isdn/5ESSmes.c

index 17f7ec8c775d2b4b042bd328f706380d5d8d99fa..7cdd21e7cc3e4fce0da1671cde5f993112120542 100644 (file)
@@ -60,17 +60,17 @@ L3INT ATT5ESSUmes_Setup(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic
        L3INT OOff = 0;\r
        L3INT rc = Q931E_NO_ERROR;\r
        L3UCHAR last_codeset = 0, codeset = 0;\r
-       L3UCHAR shift_lock = 1;\r
+       L3UCHAR shift_nolock = 1;\r
 \r
-       while (IOff < Size)\r
-       {\r
-               if (!shift_lock) {\r
+       while (IOff < Size) {\r
+\r
+               if (shift_nolock) {\r
                        codeset = last_codeset;\r
                }\r
 \r
-               if ((IBuf[IOff] & 0xF0) == Q931ie_SHIFT ) {\r
-                       shift_lock = (IBuf[IOff] & 0x08);\r
-                       if (shift_lock) {\r
+               if ((IBuf[IOff] & 0xF0) == Q931ie_SHIFT) {\r
+                       shift_nolock = (IBuf[IOff] & 0x08);\r
+                       if (shift_nolock) {\r
                                last_codeset = codeset;\r
                        }\r
                        codeset = ((IBuf[IOff] & 0x07));\r
@@ -125,7 +125,18 @@ L3INT ATT5ESSUmes_Setup(Q931_TrunkInfo_t *pTrunk, L3UCHAR *IBuf, Q931mes_Generic
                                return Q931E_ILLEGAL_IE;\r
                                break;\r
                        }\r
-\r
+               } else if (codeset == 7) {\r
+                       switch (IBuf[IOff])\r
+                       {\r
+                       case Q931ie_DISPLAY:\r
+                               rc = Q931Uie[pTrunk->Dialect][IBuf[IOff]](pTrunk, mes, &IBuf[IOff], &mes->buf[OOff], &IOff, &OOff);\r
+                               if (rc != Q931E_NO_ERROR) \r
+                                       return rc;\r
+                               break;\r
+                       default:\r
+                               return Q931E_ILLEGAL_IE;\r
+                               break;\r
+                       }\r
                } else {\r
                        return Q931E_ILLEGAL_IE;\r
                }\r