Review Board 1.7.16


IAX2: refactor nativebridge transfer.

Review Request #2602 - Created June 8, 2013 and submitted

Alec Davis
1.8 to trunk
Reviewers
asterisk-dev
Asterisk
remove triple checking of iaxs[fr->callno]->transferring

reduce indentation.

I've done this as 2 step, so that reviewers are confident nothing breaks.

 

Changes between revision 2 and 3

1 2 3
1 2 3

  1. branches/11/channels/chan_iax2.c: Loading...
branches/11/channels/chan_iax2.c
Diff Revision 2 Diff Revision 3
[20] 11530 lines
[+20] [+] immediatedial:
11531

    
   
11531

   
11532
				if (!iaxs[fr->callno]->bridgecallno) {
11532
				if (!iaxs[fr->callno]->bridgecallno) {
11533
					break;
11533
					break;
11534
				}
11534
				}
11535

    
   
11535

   
11536
				/* If the otherside is ready, either transfer media only, or signalling */
11536
				if (!(iaxs[iaxs[fr->callno]->bridgecallno]->transferring == TRANSFER_READY) &&
11537
			    	if ((iaxs[iaxs[fr->callno]->bridgecallno]->transferring == TRANSFER_MREADY) && (iaxs[fr->callno]->transferring == TRANSFER_MREADY)) {
11537
				    !(iaxs[iaxs[fr->callno]->bridgecallno]->transferring == TRANSFER_MREADY)) {
11538
					/* Both sides are ready for MEDIA only transfer */
11538
					break;

    
   
11539
				}

    
   
11540
				/* Both sides are ready */

    
   
11541

   

    
   
11542
				/* XXX what isn't checked here is that both sides match transfer types. */

    
   
11543

   

    
   
11544
				if (iaxs[fr->callno]->transferring == TRANSFER_MREADY) {
11539
					ast_verb(3, "Attempting media bridge of %s and %s\n", iaxs[fr->callno]->owner ? ast_channel_name(iaxs[fr->callno]->owner) : "<Unknown>",
11545
					ast_verb(3, "Attempting media bridge of %s and %s\n", iaxs[fr->callno]->owner ? ast_channel_name(iaxs[fr->callno]->owner) : "<Unknown>",
11540
							iaxs[iaxs[fr->callno]->bridgecallno]->owner ? ast_channel_name(iaxs[iaxs[fr->callno]->bridgecallno]->owner) : "<Unknown>");
11546
							iaxs[iaxs[fr->callno]->bridgecallno]->owner ? ast_channel_name(iaxs[iaxs[fr->callno]->bridgecallno]->owner) : "<Unknown>");
11541

    
   
11547

   
11542
					iaxs[iaxs[fr->callno]->bridgecallno]->transferring = TRANSFER_MEDIA;
11548
					iaxs[iaxs[fr->callno]->bridgecallno]->transferring = TRANSFER_MEDIA;
11543
					iaxs[fr->callno]->transferring = TRANSFER_MEDIA;
11549
					iaxs[fr->callno]->transferring = TRANSFER_MEDIA;
11544

    
   
11550

   
11545
					memset(&ied0, 0, sizeof(ied0));
11551
					memset(&ied0, 0, sizeof(ied0));
11546
					memset(&ied1, 0, sizeof(ied1));
11552
					memset(&ied1, 0, sizeof(ied1));
11547
					iax_ie_append_short(&ied0, IAX_IE_CALLNO, iaxs[iaxs[fr->callno]->bridgecallno]->peercallno);
11553
					iax_ie_append_short(&ied0, IAX_IE_CALLNO, iaxs[iaxs[fr->callno]->bridgecallno]->peercallno);
11548
					iax_ie_append_short(&ied1, IAX_IE_CALLNO, iaxs[fr->callno]->peercallno);
11554
					iax_ie_append_short(&ied1, IAX_IE_CALLNO, iaxs[fr->callno]->peercallno);
11549
					send_command(iaxs[fr->callno], AST_FRAME_IAX, IAX_COMMAND_TXMEDIA, 0, ied0.buf, ied0.pos, -1);
11555
					send_command(iaxs[fr->callno], AST_FRAME_IAX, IAX_COMMAND_TXMEDIA, 0, ied0.buf, ied0.pos, -1);
11550
					send_command(iaxs[iaxs[fr->callno]->bridgecallno], AST_FRAME_IAX, IAX_COMMAND_TXMEDIA, 0, ied1.buf, ied1.pos, -1);
11556
					send_command(iaxs[iaxs[fr->callno]->bridgecallno], AST_FRAME_IAX, IAX_COMMAND_TXMEDIA, 0, ied1.buf, ied1.pos, -1);
11551

    
   
11557

   
11552
				} else if (iaxs[iaxs[fr->callno]->bridgecallno]->transferring == TRANSFER_READY) {
11558
				} else {
11553
					/* Both sides are ready. Both would normally be at TRANSFER_READY, but also cover mismatched sides */

   
11554
					ast_verb(3, "Releasing %s and %s\n", iaxs[fr->callno]->owner ? ast_channel_name(iaxs[fr->callno]->owner) : "<Unknown>",
11559
					ast_verb(3, "Releasing %s and %s\n", iaxs[fr->callno]->owner ? ast_channel_name(iaxs[fr->callno]->owner) : "<Unknown>",
11555
							iaxs[iaxs[fr->callno]->bridgecallno]->owner ? ast_channel_name(iaxs[iaxs[fr->callno]->bridgecallno]->owner) : "<Unknown>");
11560
							iaxs[iaxs[fr->callno]->bridgecallno]->owner ? ast_channel_name(iaxs[iaxs[fr->callno]->bridgecallno]->owner) : "<Unknown>");
11556

    
   
11561

   
11557
					iaxs[iaxs[fr->callno]->bridgecallno]->transferring = TRANSFER_RELEASED;
11562
					iaxs[iaxs[fr->callno]->bridgecallno]->transferring = TRANSFER_RELEASED;
11558
					iaxs[fr->callno]->transferring = TRANSFER_RELEASED;
11563
					iaxs[fr->callno]->transferring = TRANSFER_RELEASED;
[+20] [20] 3508 lines
  1. branches/11/channels/chan_iax2.c: Loading...

https://reviewboard.asterisk.org/ runs on a server provided by Digium, Inc. and uses bandwidth donated to the open source Asterisk community by API Digital Communications in Huntsville, AL USA.
Please report problems with this site to asteriskteam@digium.com.