sipml5
                                
                                 sipml5 copied to clipboard
                                
                                    sipml5 copied to clipboard
                            
                            
                            
                        Atxfer in Chrome is blinded.
In Chrome when using atxfer action to make a consultative transfer, the transfer is blinded. The original caller talks immediatly with the transfered person. The same behavior with DTMF tones.
The error in console is:
Failed to set local answer sdp: Failed to push down transport description: Offerer must use actpass value for setup attribute.
In Firefox work perfectly.
Chrome ver: 49.0.2623.87 Asterisk ver: 11.22 Sipml ver: 2.0.3
Hi. Chrome since version 49 has become very strict with DTLS setup attribute (a=setup). See for example: https://issues.asterisk.org/jira/browse/ASTERISK-25864?filter=-2
Luckily it can be easily worked around on the client side, I've done this for jsSIP, but the same should be applicable to sipml5 as well: just substitute "a=setup:<whatever" with "a=setup:actpass" on all reINVITEs from Asterisk
Hi, thanks for your answer :+1:, but I can't find any occurencies of "a=setup:.." to substitue with actpass in SipML. Is only a client library issue? Or I should fix something in Asterisk?
Thanks
and where are you looking for those ? it's an SDP body parameter. You should check where does sipML parse SDPs of incoming INVITEs and handle it there
Ok I found in the tsdp_parser_message.js file the function that parses the header and I added the actpass in s_field attribute of header. This is a workaround for Chrome. Thanks.
It would be useful to add this fix in the library.
Here's the fix:
diff --git a/src/tinySDP/src/tsdp_parser_message.js b/src/tinySDP/src/tsdp_parser_message.js
index 002fea6..70310e2 100644
--- a/src/tinySDP/src/tsdp_parser_message.js
+++ b/src/tinySDP/src/tsdp_parser_message.js
@@ -232,6 +232,11 @@ case 1:
                if(hdr_M){
                        if((header = tsdp_header_A.prototype.Parse(tsk_ragel_parser_get_string(s_str, p, i_tag_start)))){
+                               if (navigator.webkitGetUserMedia) { // detect if using Chrome
+                                       if(header.s_field === 'setup') {
+                                               header.s_field = 'actpass';
+                                       }
+                               }
                                hdr_M.ao_hdr_A.push(header);
                        }
                }