Example #1
0
static int mwi_subscribe(struct ua *ua)
{
    const char *routev[1];
    struct mwi *mwi;
    int err;

    mwi = mem_zalloc(sizeof(*mwi), destructor);
    if (!mwi)
        return ENOMEM;

    list_append(&mwil, &mwi->le, mwi);
    mwi->ua = ua;

    routev[0] = ua_outbound(ua);

    info("mwi: subscribing to messages for %s\n", ua_aor(ua));

    err = sipevent_subscribe(&mwi->sub, uag_sipevent_sock(), ua_aor(ua),
                             NULL, ua_aor(ua), "message-summary", NULL,
                             600, ua_cuser(ua),
                             routev, routev[0] ? 1 : 0,
                             auth_handler, ua_prm(ua), true, NULL,
                             notify_handler, close_handler, mwi,
                             "Accept:"
                             " application/simple-message-summary\r\n");
    if (err) {
        warning("mwi: subscribe ERROR: %m\n", err);
    }

    if (err)
        mem_deref(mwi);

    return err;
}
Example #2
0
static int subscribe(struct presence *pres)
{
	const char *routev[1];
	struct ua *ua;
	char uri[256];
	int err;

	/* We use the first UA */
	ua = uag_find_aor(NULL);
	if (!ua) {
		warning("presence: no UA found\n");
		return ENOENT;
	}

	pl_strcpy(&contact_addr(pres->contact)->auri, uri, sizeof(uri));

	routev[0] = ua_outbound(ua);

	err = sipevent_subscribe(&pres->sub, uag_sipevent_sock(), uri, NULL,
				 ua_aor(ua), "presence", NULL, 600,
				 ua_cuser(ua), routev, routev[0] ? 1 : 0,
				 auth_handler, ua_prm(ua), true, NULL,
				 notify_handler, close_handler, pres,
				 "%H", ua_print_supported, ua);
	if (err) {
		warning("presence: sipevent_subscribe failed: %m\n", err);
	}

	return err;
}