OWPL_RESULT owplCallConnectWithBody(const OWPL_CALL hCall, const char* szAddress, const char* szContentType, const char* szBody, int BodySize) { int i; osip_message_t *invite; char *proxy ; phVLine *vl; char from[512]; OWSIPAccount account ; phcall_t *ca = ph_locate_call_by_cid(hCall); if (ca == NULL) { return OWPL_RESULT_INVALID_ARGS ; } account = owplLineSipAccountGet (ca->vlid) ; if (account <= 0) { return OWPL_RESULT_INVALID_ARGS ; } // TODO verif des arguments if (!szAddress){ return OWPL_RESULT_INVALID_ARGS; } vl = ph_valid_vlid(ca->vlid); if (!vl) { return OWPL_RESULT_INVALID_ARGS; } ph_vline_get_from(from, sizeof(from), vl); proxy = owsip_account_proxy_get (account) ; if((i = eXosip_build_initial_invite(&invite, (char *)szAddress, from, proxy, "")) != 0){ return -1; } eXosip_lock(); i = eXosip_initiate_call_with_body(account, invite, szContentType, szBody, 0); if (i <= 0) { return OWPL_RESULT_FAILURE; } ca->extern_cid = i; ca->vlid = ph_vline2vlid(vl); eXosip_unlock(); owplAssociateCall2PluginByContentType(ca->cid, szContentType); return OWPL_RESULT_SUCCESS; }
OWPL_RESULT owplMessageSend(OWPL_LINE hLine, const char * szRemoteUri, const char * szContent, const char * szMIME, int * messageId) { phVLine *vl; char from[512]; OWSIPAccount account ; // SPIKE_SPIKE_SIP_SIMPLE if (phcfg.pim_disabled) { return OWPL_RESULT_SUCCESS; } account = owplLineSipAccountGet (hLine) ; if (account <= 0) { return OWPL_RESULT_INVALID_ARGS ; } if(hLine <= 0 || szRemoteUri == NULL || strlen(szRemoteUri) <= 0 || szMIME == NULL || strlen(szMIME) <= 0 || szContent == NULL || strlen(szContent) <= 0 || messageId == NULL) { return OWPL_RESULT_INVALID_ARGS; } vl = ph_valid_vlid(hLine); if(!vl) { return OWPL_RESULT_INVALID_ARGS; } ph_vline_get_from(from, sizeof(from), vl); eXosip_lock(); * messageId = eXosip_message ( account, (char *) szRemoteUri, from, owsip_account_proxy_get (account), (char *) szContent, (char *) szMIME ) ; eXosip_unlock(); return OWPL_RESULT_SUCCESS; }
static void ph_nat_refresh(phVLine *vl) { char buf[128]; char to[128]; assert(vl); ph_vline_get_from(buf, sizeof(buf), vl); snprintf(to, sizeof(to), "sip:ping@%s", vl->server); phSendOptions(buf, to); }
MY_DLLEXPORT OWPL_RESULT owplMessageSend(OWPL_LINE hLine, const char * szRemoteUri, const char * szContent, const char * szMIME, int * messageId) { int i; phVLine *vl; char from[512]; // SPIKE_SPIKE_SIP_SIMPLE if (phcfg.pim_disabled) { return OWPL_RESULT_SUCCESS; } if(hLine <= 0 || szRemoteUri == NULL || strlen(szRemoteUri) <= 0 || szMIME == NULL || strlen(szMIME) <= 0 || szContent == NULL || strlen(szContent) <= 0 || messageId == NULL) { return OWPL_RESULT_INVALID_ARGS; } vl = ph_valid_vlid(hLine); if(!vl) { return OWPL_RESULT_INVALID_ARGS; } ph_vline_get_from(from, sizeof(from), vl); eXosip_lock(); *messageId = eXosip_message((char *)szRemoteUri, from, vl->proxy, szContent, szMIME); eXosip_unlock(); return OWPL_RESULT_SUCCESS; }