Summary: | ASTERISK-00615: [patch] IAX2 native bridge - two trivial (though critical) fixes | ||
Reporter: | blackfire (blackfire) | Labels: | |
Date Opened: | 2003-12-03 13:11:21.000-0600 | Date Closed: | 2004-09-25 02:49:15 |
Priority: | Trivial | Regression? | No |
Status: | Closed/Complete | Components: | Core/General |
Versions: | Frequency of Occurrence | ||
Related Issues: | |||
Environment: | Attachments: | ( 0) iax2-transfer.diff | |
Description: | IAX2 native transfers are not working with stock libiax2 (cvs from somewhere last month). I've found the cause to be two-fold: * iax_send_txready() is in fact duplicated iax_send_txacc() that when called, issues an endless flood of TXACC's between the connecting parties instead of notifying the server that they can see each other with a TXREADY. * iax_header_to_event(), case IAX_EVENT_TXREQ doesn't fill the session->transfer sockaddr_in structure, which makes the peer address equal to 0.0.0.0:0 ****** ADDITIONAL INFORMATION ****** Patch attached, though the fixes are obvious for anybody who looks at the code. Feel free to use it anywhere you wish. One thing that bugs me is *why did it go unnoticed?* It must have broken calls between two IAX2 clients, when one of them isn't Asterisk. Expecting to see a flood of "DIAX 0.9.5 broken" mails since it switched to IAX2 only recently? :) | ||
Comments: | By: adam (adam) 2003-12-03 18:37:55.000-0600 Did I ever tell you you're my hero. Seriously though, thanks. I'm about to go live with a network of libiax2 clients and this would have caused pain. I also found iax_get_event in blocking mode doesn't work, I submitted a patch but I'm concerned about how many people are actually using this lib. By: blackfire (blackfire) 2003-12-04 04:38:33.000-0600 Hmm I don't know really... I thought it was quite popular (you can set a single #define in libiaxclient and it uses IAX2). Apparently people use only IAX2->other transports where it seems fine. It would also help (IMHO) to cut out the iax_do_event() - it seems to come from IAX1 and is enclosed by #if 0/#endif, while having a body of the order of 10KB, making the code difficult to read (scroll n+1 lines up to check where the line you found comes from just to find an #if 0...). On a side note, what clients are you going to use? libiaxclient based ones? Or something developed by you? Also, miniphone.c in iax2 seems to be copied raw from iax1 (references to e->event.xxx fields) and doesn't even compile under iax2 (for me, at least). By: Mark Spencer (markster) 2003-12-04 15:54:27.000-0600 Fixed! |