mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	generate connected line info update from info in h.323 packets
Tested by: benngard git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@247035 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		| @@ -1503,6 +1503,14 @@ int onAlerting(ooCallData *call) | ||||
| 		return 0; | ||||
| 	} | ||||
| 	c = p->owner; | ||||
|  | ||||
| 	if (call->remoteDisplayName) { | ||||
| 		struct ast_party_connected_line connected; | ||||
| 		ast_party_connected_line_init(&connected); | ||||
| 		connected.id.name = (char *) call->remoteDisplayName; | ||||
| 		connected.source = AST_CONNECTED_LINE_UPDATE_SOURCE_ANSWER; | ||||
| 		ast_channel_queue_connected_line_update(c, &connected); | ||||
| 	} | ||||
| 	if (c->_state != AST_STATE_UP) | ||||
| 		ast_setstate(c, AST_STATE_RINGING); | ||||
|  | ||||
| @@ -1546,6 +1554,14 @@ int onProgress(ooCallData *call) | ||||
| 		return 0; | ||||
| 	} | ||||
| 	c = p->owner; | ||||
|  | ||||
| 	if (call->remoteDisplayName) { | ||||
| 		struct ast_party_connected_line connected; | ||||
| 		ast_party_connected_line_init(&connected); | ||||
| 		connected.id.name = (char *) call->remoteDisplayName; | ||||
| 		connected.source = AST_CONNECTED_LINE_UPDATE_SOURCE_ANSWER; | ||||
| 		ast_channel_queue_connected_line_update(c, &connected); | ||||
| 	} | ||||
| 	if (c->_state != AST_STATE_UP) | ||||
| 		ast_setstate(c, AST_STATE_RINGING); | ||||
|  | ||||
| @@ -1927,6 +1943,15 @@ int onCallEstablished(ooCallData *call) | ||||
| 		} | ||||
| 		if (p->owner) { | ||||
| 			struct ast_channel* c = p->owner; | ||||
|  | ||||
| 			if (call->remoteDisplayName) { | ||||
| 				struct ast_party_connected_line connected; | ||||
| 				ast_party_connected_line_init(&connected); | ||||
| 				connected.id.name = (char *) call->remoteDisplayName; | ||||
| 				connected.source = AST_CONNECTED_LINE_UPDATE_SOURCE_ANSWER; | ||||
| 				ast_channel_queue_connected_line_update(c, &connected); | ||||
| 			} | ||||
|  | ||||
| 			ast_queue_control(c, AST_CONTROL_ANSWER); | ||||
|    			ast_channel_unlock(p->owner); | ||||
| 			manager_event(EVENT_FLAG_SYSTEM,"ChannelUpdate","Channel: %s\r\nChanneltype: %s\r\n" | ||||
|   | ||||
| @@ -38,6 +38,23 @@ int ooOnReceivedReleaseComplete(OOH323CallData *call, Q931Message *q931Msg); | ||||
| int ooOnReceivedCallProceeding(OOH323CallData *call, Q931Message *q931Msg); | ||||
| int ooOnReceivedAlerting(OOH323CallData *call, Q931Message *q931Msg); | ||||
| int ooOnReceivedProgress(OOH323CallData *call, Q931Message *q931Msg); | ||||
| int ooHandleDisplayIE(OOH323CallData *call, Q931Message *q931Msg); | ||||
|  | ||||
| int ooHandleDisplayIE(OOH323CallData *call, Q931Message *q931Msg) { | ||||
|    Q931InformationElement* pDisplayIE; | ||||
|  | ||||
|    /* check for display ie */ | ||||
|    pDisplayIE = ooQ931GetIE(q931Msg, Q931DisplayIE); | ||||
|    if(pDisplayIE) { | ||||
|       if (call->remoteDisplayName) | ||||
| 	memFreePtr(call->pctxt, call->remoteDisplayName); | ||||
|       call->remoteDisplayName = (char *) memAllocZ(call->pctxt,  | ||||
|                                  pDisplayIE->length*sizeof(ASN1OCTET)+1); | ||||
|       strncpy(call->remoteDisplayName, (char *)pDisplayIE->data, pDisplayIE->length*sizeof(ASN1OCTET)); | ||||
|    } | ||||
|  | ||||
|    return OO_OK; | ||||
| } | ||||
|  | ||||
| int ooHandleFastStart(OOH323CallData *call, H225Facility_UUIE *facility) | ||||
| { | ||||
| @@ -796,6 +813,7 @@ int ooOnReceivedAlerting(OOH323CallData *call, Q931Message *q931Msg) | ||||
|    H245H2250LogicalChannelParameters * h2250lcp = NULL;   | ||||
|    int i=0, ret=0; | ||||
|  | ||||
|    ooHandleDisplayIE(call, q931Msg); | ||||
|  | ||||
|    if(!q931Msg->userInfo) | ||||
|    { | ||||
| @@ -1019,6 +1037,7 @@ int ooOnReceivedProgress(OOH323CallData *call, Q931Message *q931Msg) | ||||
|    H245H2250LogicalChannelParameters * h2250lcp = NULL;   | ||||
|    int i=0, ret=0; | ||||
|  | ||||
|    ooHandleDisplayIE(call, q931Msg); | ||||
|  | ||||
|    if(!q931Msg->userInfo) | ||||
|    { | ||||
| @@ -1242,6 +1261,8 @@ int ooOnReceivedSignalConnect(OOH323CallData* call, Q931Message *q931Msg) | ||||
|    ooLogicalChannel * pChannel = NULL; | ||||
|    H245H2250LogicalChannelParameters * h2250lcp = NULL;   | ||||
|  | ||||
|    ooHandleDisplayIE(call, q931Msg); | ||||
|  | ||||
|    if(!q931Msg->userInfo) | ||||
|    { | ||||
|       OOTRACEERR3("Error: UUIE not found in received H.225 Connect message" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user