亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ua_appprobe.cpp

?? 改進后的SIP SERVICE API
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
                               &L_error);
                            
                            
							if(G_redir) {
                              
                              sip_msg_header_t * contact = 
                                sip_msg_new_contact_header(G_redir);
                              
                              if((!contact) || 
                                 ((sip_msg_insert_header
                                   (L_Message_rsp -> headers, 
                                    contact) != SIP_NORMAL))) {
								std::cerr << "==  Unable to insert the contact "
                                          << "header in 302 response"<<std::endl;
								break;
                              }
                              
                              sip_msg_free_header(contact);
                            }
                            
                            sip_msg_free_body(L_body);
                            
                            L_response = buildRsp(L_RecvEvent,L_Message_rsp);
                            getProbe().send(P_service,P_session,*L_response);
                          }
                          break;
						default :
                          throw std::runtime_error
							("UA_AppProbe::receive bad response scenario");
						}
		            
					break;
				}
			case SIP_MSG_BYE: 
				{
				printf("in receive SIP_MSG_BYE!!\n");
				if (G_trace >= 1) {
				std::cerr << "== Received a call-stateless BYE Request"<<std::endl;
				}
				// Send a 200 OK response 
				L_Message_rsp = sip_msg_new_response(200,
													NULL,
													NULL,
													NULL,
													NULL,
													NULL,
													&L_error);
	            
				L_response = buildRsp(L_RecvEvent,L_Message_rsp);
				getProbe().send(P_service,P_session,*L_response);
				L_session.setState(UA_Session::CALL_RELEASING);
	            
				break;
				}
			default:
				{
				printf("in receive default!!\n");       
				sip_msg_body_t * L_body = sip_msg_new_body_copy
				(L_Message_recv->body,
				SIP_MSG_PHYSICAL_COPY, 
				0);
	            
				if (G_trace >= 1)
				std::cerr << "== Received a unknown Request"<<std::endl;
	            
	               
				// Send a 200 OK response 
				L_Message_rsp = sip_msg_new_response(200,
													NULL,
													NULL,
													NULL,
													L_body,
													NULL,
													&L_error);

				sip_msg_free_body(L_body);
	                  
	               
				L_response = buildRsp(L_RecvEvent,L_Message_rsp);
				getProbe().send(P_service,P_session,*L_response);
				L_session.setState(UA_Session::CALL_CONFIRMED);
				if (std::string(L_Message_recv->start_line.request.extension_method) == "REFER")
					{
					sleep(1); 
					// silent subscrition
                    SIP_MessageContainer* L_silentSubscribe = 
                      dynamic_cast<SIP_MessageContainer*>(buildReqInDialog(L_RecvEvent,0));

					L_silentSubscribe->setSubscriptionId
                      (FF_Identifier(1,SIP_SRVC_NEW_SUBSCRIPTION));

					L_silentSubscribe->silentSubscribeRequired
                      (sip_msg_new_event_header((char*)"refer",
                                                (char*)"0",
                                                0,
                                                0),
                       SIP_CALL_EVT_ROLE_NOTIFIER);

					if (G_trace >= 1)
						std::cerr << "== sending silent subscribe notifier side"
								<<std::endl;   

					getProbe().send(P_service,P_session,*L_silentSubscribe);
					//end silent subscription
					//send notify
					sip_msg_header_t* VP_contact_header = L_Message_recv -> 
                      headers -> vector[sip_msg_find_and_parse_header
                                       (L_Message_recv -> headers,
                                        SIP_MSG_HDR_FROM,
                                        0, NULL)];
					if (VP_contact_header == 0)
                      {
						std::cerr<< "can't find contact header"<<std::endl;
						exit(0);
                      }

					sip_msg_message_t* VP_msg_notify =  sip_msg_new_request 
																(SIP_MSG_NOTIFY,
																VP_contact_header -> structured_header ->
																content.contact.uri,
																NULL,
																0,
																0,
																0,
																0,
																0);
	    
					if(!VP_msg_notify) {
					fprintf(stderr, "== Error creating new NOTIFY message\n");
					}
			    
					sip_msg_header_t* VP_subscription_state = sip_msg_new_subscription_state_header
					((char *)"active", NULL, -1, -1, NULL, NULL);	    
					sip_msg_insert_header(VP_msg_notify -> headers,
										VP_subscription_state,
										-1);
					sip_msg_free_header(VP_subscription_state);
					
					sip_msg_insert_header(VP_msg_notify -> headers,
										sip_msg_new_event_header((char *)"refer",(char *)"0",0,0),
										-1);
		            
					L_response = buildReqInDialog(L_RecvEvent,VP_msg_notify);
					dynamic_cast<SIP_MessageContainer*>(L_response)->setSubscriptionId(FF_Identifier(1,1)); //work around jeh
					getProbe().send(P_service,
									P_session,
									*L_response);
					//end notify
					}

          
		
				}
			break;
			}
		break;
		case UA_Session::CALL_SUCCESS :
			{
		       printf("in UA_Session::CALL_SUCCESS!!\n");
			if (L_Message_recv->kind==SIP_MSG_REQUEST)
				{
				// IF ACK session state a CONFIRMED
				if (L_Message_recv->start_line.request.method==SIP_MSG_ACK)
                  {
					if (G_trace >= 1)
                      std::cerr << "== Received a ACK Request"<<std::endl;
					L_session.setState(UA_Session::CALL_CONFIRMED);
                    if(G_server_close) {
                      L_session.storeProviderId(L_RecvEvent);
                      L_session.setService(P_service);
                      closeSession(L_session);
                    }
                  }
				else
					throw std::runtime_error 
					("UA_AppProbe::receive ACK expected !");
				// End of ACK
				}
			}
		break;
		case UA_Session::CALL_CONFIRMED :
			{
			 printf("in UA_Session::CALL_CONFIRMED!!\n");
			// IF BYE session delete
			if (L_Message_recv->start_line.request.method==SIP_MSG_BYE)
				{
				if (G_trace >= 1)
					std::cerr << "== Received a BYE Request"<<std::endl;
				L_Message_rsp = sip_msg_new_response
					(200,
					L_Message_recv->start_line.request.version,
					NULL,
					NULL,
					0,
					NULL,
					&L_error);
				L_response = buildRsp(L_RecvEvent,L_Message_rsp);
		      
				getProbe().send(P_service,P_session,*L_response);
				G_nfinishedCalls++;
		      
				} // End of BYE
			else if (L_Message_recv->start_line.request.method==SIP_MSG_INVITE) {
				// This is a re-invite: we send a 200 OK and simulate initial call
				// processing.
	                  
				if (G_trace >= 1) {
				std::cerr << "== Received a REINVITE Request"<<std::endl;
				}
	            
				// Send a 200 OK response 
				L_Message_rsp = sip_msg_new_response(200,
													NULL,
													NULL,
													NULL,
													sip_msg_new_body_copy
													(L_Message_recv->body,
													SIP_MSG_PHYSICAL_COPY, 
													0),
													NULL,
													&L_error);
	                  
				L_response = buildRsp(L_RecvEvent,L_Message_rsp);
				getProbe().send(P_service,P_session,*L_response);
				L_session.setState(UA_Session::CALL_SUCCESS);
			} else {
				throw std::runtime_error ("UA_AppProbe::receive BYE expected !");
			}
			}
		break;
		case UA_Session::CALL_CALLING :
			{
				 printf("in UA_Session::CALL_CALLING!!\n");
			if (L_Message_recv->start_line.response.status_code == 200 )
				{
				printf("if L_Message_recv->start_line.response.status_code\n");
				sip_msg_header_t * cseq_header  = L_Message_recv -> headers -> 
        vector[sip_msg_find_and_parse_header
               (L_Message_recv -> headers,
                SIP_MSG_HDR_CSEQ,
                0, NULL)];

      if(cseq_header-> structured_header -> content.cseq.method 
         == SIP_MSG_INVITE)
		  {
				if (G_trace >= 1)
					std::cerr << "== Received a 200 Request, send ACK "
							<<std::endl;   
				L_Message_rsp =  sip_msg_new_request 
					(SIP_MSG_ACK,
                     sip_msg_new_empty_uri(),
                     NULL,
                     0,
                     0,
                     0,
                     0,
                     &L_error);
		      
				if (!L_Message_rsp) {
					std::cerr <<"== Unable to build new Request "
							<<L_error.status<<std::endl;
					getProbe().destroySession(P_session,SIP_CAUSE_NORMAL);
					return SIP_INTERNAL_FAILURE;
				}

				L_response = buildRsp(L_RecvEvent,L_Message_rsp);
				getProbe().send(P_service,P_session,*L_response);
		
		  }
				
	  if((cseq_header-> structured_header -> content.cseq.extension_method != 0 )
		  && (std::string(cseq_header-> structured_header -> content.cseq.extension_method ) == "REFER"))
		  {
		 SIP_MessageContainer* L_silentSubscribe = dynamic_cast<SIP_MessageContainer*>(buildReqInDialog(L_RecvEvent,0));
		 L_silentSubscribe->setSubscriptionId(FF_Identifier(-1,SIP_SRVC_NEW_SUBSCRIPTION));
		 L_silentSubscribe->silentSubscribeRequired(sip_msg_new_event_header((char *)"refer",(char *)"0",0,0),SIP_CALL_EVT_ROLE_SUBSCRIBER);
		if (G_trace >= 1)
					std::cerr << "== sending silent subscribe server side"
							<<std::endl;   

		 getProbe().send(P_service,P_session,*L_silentSubscribe);
 
		  }

				L_session.storeProviderId(L_RecvEvent);
				L_session.setState(UA_Session::CALL_CONFIRMED);
				L_session.setService(P_service);
	        
				callQueue.push_back(&L_session);
				if (!G_subscribe)
					{        
					//callQueue.push_back(&L_session);
					}
				else
					{
					sendSubscriptionMessage(P_service, L_session, *L_response);
					}  

				}
			break;
			case UA_Session::CALL_RELEASING :
			{
				printf("in UA_Session::CALL_RELEASING!!\n");
				if (G_trace >= 1)
				std::cerr << "== Received a 200 ok for the BYE Request"
							<<std::endl;
			}
			break;
			default :
			std::cerr << "==  UASppProbe::receive unknown state" << std::endl;
	      	
			}
		}
		
	}
  }

  catch (std::exception& e)
    {
      std::cerr << "== UA_AppProbe::receive, exception ["
                <<e.what()<<"]"<<std::endl;
      getProbe().destroySession(P_session,SIP_CAUSE_NORMAL);
      return SIP_INTERNAL_FAILURE;
    }
	
  return SIP_SUCCESS;
}

SIP_Event* UA_AppProbe::buildRsp (FF_SipMessageContainer& P_initialRequest, 
                                  sip_msg_message_t * P_Message_rsp)
{
  if (G_trace >= 1) std::cerr << "== Entering buildRsp" << std::endl;

  SIP_MessageContainer* L_Rsp = new SIP_MessageContainer;

  print_message_info(P_Message_rsp, "Sending");

  L_Rsp->setPayload(P_Message_rsp);
      
  // set the call with 1 for the User and the Provider value set by the stack
  L_Rsp->setCallId
    (FF_Identifier(1,
                       P_initialRequest.getCallId().
                       getProviderIdentifier()));

  // set the dialogId with 1 for the User and the Provider value set by 
  // the stack
  L_Rsp->setDialogId(FF_Identifier(1,P_initialRequest.getDialogId().
                                         getProviderIdentifier()));

  // if (P_initialRequest.getPayload()->kind ==SIP_MSG_REQUEST )

  // set the TransactionId with 1 for the User and the Provider value 
  // set by the stack
  L_Rsp->setTransactionId(FF_Identifier
                          (1,P_initialRequest.getTransactionId().
                           getProviderIdentifier()));
  
  // Set also the subscription IF if available
  if(P_initialRequest.getSubscriptionId().
     getProviderIdentifier() != -1) {
    L_Rsp->setSubscriptionId(FF_Identifier
                             (1,P_initialRequest.getSubscriptionId().
                              getProviderIdentifier()));
  }
  if (G_trace >= 1) {
    fprintf(stderr,
            "== Building response '%d %s'message with provider IDs:\n"
            "==   Call-ID   = %d,\n"
            "==   Dialog-ID = %d,\n"
            "==   Trans-ID  = %d,\n"
            "==   Sub-ID    = %d.\n",
            P_Message_rsp -> start_line.response.status_code,
            P_Message_rsp -> start_line.response.reason_phrase,
            L_Rsp->getCallId().getProviderIdentifier(),
            L_Rsp->getDialogId().getProviderIdentifier(),
            L_Rsp->getTransactionId().getProviderIdentifier(),
            L_Rsp->getSubscriptionId().getProviderIdentifier());
  }
  
  if (G_trace >= 2) std::cerr << "== Returning from buildRsp" << std::endl;
  
  return L_Rsp;
}

SIP_Event* UA_AppProbe::buildReqInDialog
(FF_SipMessageContainer& P_initialRequest, 
 sip_msg_message_t * P_Message_rsp)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本亚洲电影天堂| 欧美成人r级一区二区三区| 亚洲视频一二三| 91丝袜美女网| 天堂蜜桃一区二区三区| 日韩午夜在线播放| 国产在线播精品第三| 欧美高清在线视频| 99视频超级精品| 亚洲国产精品人人做人人爽| 欧美一区二区三区视频在线 | 日本久久一区二区三区| 樱花草国产18久久久久| 欧美日本一区二区在线观看| 麻豆91在线观看| 精品国产伦一区二区三区免费 | 日本伊人色综合网| 精品免费视频一区二区| 福利91精品一区二区三区| 中文字幕欧美区| 色综合久久99| 手机精品视频在线观看| 久久亚洲综合色一区二区三区| 国产做a爰片久久毛片| 亚洲色欲色欲www| 91国偷自产一区二区使用方法| 久久精品人人做人人爽人人| youjizz国产精品| 亚洲地区一二三色| 欧美激情一区二区三区蜜桃视频| jizz一区二区| 欧美综合天天夜夜久久| 免费日本视频一区| 亚洲柠檬福利资源导航| 欧美一区二区三区人| 99久久夜色精品国产网站| 一区二区久久久久| 精品伦理精品一区| 国产一区二区成人久久免费影院 | 国产精品欧美久久久久无广告| 色琪琪一区二区三区亚洲区| 日韩专区欧美专区| 亚洲欧美在线aaa| 欧美日本一道本| 色综合久久99| 久久福利资源站| 亚洲动漫第一页| 日本一区二区高清| 在线播放91灌醉迷j高跟美女 | 久久精品国产99久久6| 国产精品久久久久影院| 日韩一区二区三区电影| 成人精品高清在线| 中文字幕一区在线| 久久老女人爱爱| 欧美日韩mp4| 欧美亚洲综合在线| 国产xxx精品视频大全| 美女视频黄久久| 一区二区三区四区在线免费观看| 国产精品色眯眯| 精品欧美一区二区三区精品久久| 3atv一区二区三区| 欧美综合一区二区三区| 一本久道久久综合中文字幕| 国产专区综合网| 麻豆91精品视频| 亚洲成av人影院| 中文字幕日韩一区| 国产日韩精品一区二区三区在线| 欧美午夜精品一区二区蜜桃| 99精品欧美一区二区三区小说| 日本最新不卡在线| 亚洲乱码一区二区三区在线观看| 日韩欧美一区二区视频| 欧美日韩精品一区二区| 一本到不卡免费一区二区| 成人av资源在线| 成人黄色小视频在线观看| 波多野结衣视频一区| 国产成人超碰人人澡人人澡| 国产69精品久久777的优势| 国模少妇一区二区三区| 国产不卡免费视频| 风间由美一区二区三区在线观看| 顶级嫩模精品视频在线看| 国产一区二区三区免费播放| 国产激情视频一区二区三区欧美| 日本亚洲免费观看| 九九在线精品视频| 另类综合日韩欧美亚洲| 国产乱码精品1区2区3区| 久久超碰97人人做人人爱| 国产大陆亚洲精品国产| 国产成人精品免费| 一本一本大道香蕉久在线精品| 91亚洲国产成人精品一区二区三 | 一区二区三区中文字幕电影| 亚洲欧洲三级电影| 亚洲国产综合人成综合网站| 一区二区三区毛片| 日日骚欧美日韩| 精品在线观看免费| 91一区一区三区| 在线观看亚洲一区| 精品少妇一区二区三区日产乱码| 久久综合久久综合九色| 亚洲人吸女人奶水| 午夜视频在线观看一区| 国产精品综合一区二区| 99视频国产精品| 日韩欧美一级在线播放| 国产精品网站一区| 亚洲电影一级片| 久久成人综合网| 欧美专区亚洲专区| 欧美一级理论性理论a| 国产精品毛片久久久久久久| 一区二区在线免费| 国产精品影音先锋| 色老汉av一区二区三区| 精品国产精品一区二区夜夜嗨 | 日本丶国产丶欧美色综合| 欧美三片在线视频观看| 欧美白人最猛性xxxxx69交| 久久先锋影音av| 午夜精品福利一区二区蜜股av| 亚洲黄色片在线观看| 韩国精品一区二区| 99精品欧美一区二区三区小说| 欧美疯狂做受xxxx富婆| 国产精品欧美久久久久无广告| 亚洲第一av色| 色域天天综合网| 欧美刺激脚交jootjob| 亚洲最大成人综合| 国产精品一区一区三区| 538在线一区二区精品国产| 欧美激情一区二区在线| 视频精品一区二区| 国产精品18久久久久久vr| 欧美色网站导航| 亚洲国产精品t66y| 午夜成人免费电影| 99精品一区二区三区| 日韩免费观看2025年上映的电影| 国产精品国产自产拍高清av | 亚洲欧美日韩国产一区二区三区 | 激情五月激情综合网| 亚洲丝袜美腿综合| 国产伦精品一区二区三区免费 | 中文一区在线播放| 久久se精品一区二区| 欧美在线观看一区| 亚洲天堂久久久久久久| 国产一区二区影院| 欧美一区二区三区在线电影| 国产精品超碰97尤物18| 国产一区不卡视频| 国产偷国产偷精品高清尤物| 亚洲综合激情另类小说区| 色综合天天综合网国产成人综合天| 日韩欧美国产综合一区| 日本中文在线一区| 99久久亚洲一区二区三区青草| 婷婷成人激情在线网| 制服丝袜国产精品| 大陆成人av片| 久久久久久毛片| 国v精品久久久网| 91麻豆精品国产无毒不卡在线观看 | 欧美日韩黄色一区二区| 国产精品亲子乱子伦xxxx裸| 成人av在线资源网站| 国产亚洲一区二区在线观看| 国产91在线观看| 久久精品人人做人人爽97| 大美女一区二区三区| 日本一区二区三区高清不卡 | 中国色在线观看另类| 国产呦萝稀缺另类资源| 中文字幕精品在线不卡| 国产激情91久久精品导航| 亚洲欧洲精品一区二区三区不卡| 日本vs亚洲vs韩国一区三区二区| 色视频一区二区| 亚洲天堂中文字幕| 欧美人体做爰大胆视频| 中文字幕一区二区三区在线播放| 99视频精品全部免费在线| 亚洲综合图片区| 欧美日韩精品欧美日韩精品一| 日本中文字幕不卡| 26uuu久久天堂性欧美| 成人成人成人在线视频| 日韩久久一区二区| 欧美一区二区三区小说| 国产麻豆精品视频| 一区二区三区在线视频观看 | 久久久久国产免费免费|