/* this method can't be called unless the previous INVITE transaction is over. */ int eXosip_call_build_initial_invite (osip_message_t ** invite, const char *to, const char *from, const char *route, const char *subject) { int i; osip_to_t *_to = NULL; *invite = NULL; if (to != NULL && *to == '\0') return OSIP_BADPARAMETER; if (route != NULL && *route == '\0') route = NULL; if (subject != NULL && *subject == '\0') subject = NULL; i = osip_to_init (&_to); if (i != 0) return i; i = osip_to_parse (_to, to); if (i != 0) { osip_to_free (_to); return i; } i = generating_request_out_of_dialog (invite, "INVITE", to, eXosip.transport, from, route); osip_to_free (_to); if (i != 0) return i; _eXosip_dialog_add_contact (*invite, NULL); if (subject != NULL) osip_message_set_subject (*invite, subject); /* after this delay, we should send a CANCEL */ osip_message_set_expires (*invite, "120"); return OSIP_SUCCESS; }
int eXosip_subscribe_build_initial_request (struct eXosip_t *excontext, osip_message_t ** sub, const char *to, const char *from, const char *route, const char *event, int expires) { char tmp[10]; int i; osip_to_t *_to = NULL; *sub = NULL; if (to == NULL || *to == '\0') return OSIP_BADPARAMETER; if (from == NULL || *from == '\0') return OSIP_BADPARAMETER; if (event == NULL || *event == '\0') return OSIP_BADPARAMETER; if (route == NULL || *route == '\0') route = NULL; i = osip_to_init (&_to); if (i != 0) return i; i = osip_to_parse (_to, to); if (i != 0) { osip_to_free (_to); return i; } i = _eXosip_generating_request_out_of_dialog (excontext, sub, "SUBSCRIBE", to, excontext->transport, from, route); osip_to_free (_to); if (i != 0) return i; _eXosip_dialog_add_contact (excontext, *sub, NULL); snprintf (tmp, 10, "%i", expires); osip_message_set_expires (*sub, tmp); osip_message_set_header (*sub, "Event", event); return OSIP_SUCCESS; }