void pa_classify_add_stream(struct userdata *u, const char *prop, enum pa_classify_method method, const char *arg, const char *clnam, const char *sname, uid_t uid, const char *exe, const char *grnam, uint32_t flags, const char *port) { struct pa_classify *classify; struct pa_policy_group *group; pa_assert(u); pa_assert_se((classify = u->classify)); if (((prop && method && arg) || uid != (uid_t)-1 || exe) && grnam) { if (port) { if ((group = pa_policy_group_find(u, grnam)) == NULL) { flags &= ~PA_POLICY_LOCAL_ROUTE; pa_log("can't find group '%s' for stream", grnam); } else { group->portname = pa_xstrdup(port); pa_log_debug("set portname '%s' for group '%s'", port, grnam); } } streams_add(&classify->streams.defs, prop,method,arg, clnam, sname, uid, exe, grnam, flags); } }
streams * setup_stream (char *str, sockets * s) { char *arg[20], pol; streams *sid; int i; transponder t; init_hw (); detect_dvb_parameters (str, &t); LOG ("Setup stream %d parameters, sock_id %d, handle %d", s->sid, s->id, s->sock); if (!get_sid(s->sid)) // create the stream { int a_id = 0, s_id = 0; char pol; s_id = streams_add (); if(!(sid = get_sid(s_id))) LOG_AND_RETURN ( NULL, "Could not add a new stream"); s->sid = s_id; // s->close_sec = 200; // s->timeout = (socket_action) stream_timeout; LOG ("Setup stream done: sid: %d (e:%d) for sock %d handle %d", s_id, st[s_id].enabled, s->id, s->sock); } if (!( sid = get_sid(s->sid))) LOG_AND_RETURN (NULL, "Stream %d not enabled for sock_id %d handle %d", s->sid, s->id, s->sock); set_stream_parameters (s->sid, &t); sid->do_play = 0; if(sid->adapter >= 0 && !strncasecmp( s->buf, "SETUP", 5 )) // SETUP after PLAY { int ad = sid->adapter; sid->adapter = -1; close_adapter_for_stream(sid->sid, ad); } return sid; }