]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Set TON/PRESENTATION information more carefully when no CallingNumber IE available
authorPaul Cadach <paul@odt.east.telecom.kz>
Fri, 29 Sep 2006 21:05:43 +0000 (21:05 +0000)
committerPaul Cadach <paul@odt.east.telecom.kz>
Fri, 29 Sep 2006 21:05:43 +0000 (21:05 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@44042 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/h323/ast_h323.cxx

index dfad8518f879f02542a32987f7c47b55b8dc0736..114edbbc42ca991bff658496b6b2642ecefe700e 100644 (file)
@@ -762,6 +762,16 @@ void MyH323Connection::SetCallDetails(void *callDetails, const H323SignalPDU &se
                        /* Construct fields back */
                        cd->type_of_number = (type << 4) | screening;
                        cd->presentation = (presentation << 5) | screening;
+               } else if (cd->call_source_e164[0]) {
+                       cd->type_of_number = 0;         /* UNKNOWN */
+                       cd->presentation = 0x03;        /* ALLOWED NETWORK NUMBER - Default */
+                       if (setupPDU.GetQ931().HasIE(Q931::UserUserIE)) {
+                               H225_Setup_UUIE &setup_uuie = setupPDU.m_h323_uu_pdu.m_h323_message_body
+                               if (setup_uuie.HasOptionalField(e_presentationIndicator))
+                                       cd->presentation = (cd->presentation & 0x9f) | (((unsigned int)setup_uuie.m_presentationIndicator.GetTag()) << 5);
+                               if (setup_uuie.HasOptionalField(e_screeningIndicator))
+                                       cd->presentation = (cd->presentation & 0xe0) | (((unsigned int)setup_uuie.m_screeningIndicator.GetValue()) & 0x1f);
+                       }
                } else {
                        cd->type_of_number = 0;         /* UNKNOWN */
                        cd->presentation = 0x43;        /* NUMBER NOT AVAILABLE */