Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc
Commits
5a0a657b
Commit
5a0a657b
authored
Jan 21, 2003
by
Loïc Minier
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* use of service attributes to get the name of the session, insert it in
the playlist
parent
0b9c1f07
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
91 additions
and
16 deletions
+91
-16
modules/access/slp.c
modules/access/slp.c
+91
-16
No files found.
modules/access/slp.c
View file @
5a0a657b
...
...
@@ -2,7 +2,7 @@
* slp.c: SLP access plugin
*****************************************************************************
* Copyright (C) 2001, 2002 VideoLAN
* $Id: slp.c,v 1.
5 2003/01/21 17:34:03
lool Exp $
* $Id: slp.c,v 1.
6 2003/01/21 21:19:36
lool Exp $
*
* Authors: Loc Minier <lool@videolan.org>
*
...
...
@@ -46,33 +46,36 @@ static int Demux ( input_thread_t * );
* Module descriptor
*****************************************************************************/
#define SRVTYPE_TEXT "SLP service type"
#define SRVTYPE_TEXT
"SLP service type"
#define SRVTYPE_LONGTEXT "The service type string for SLP queries, " \
"including the authority string (if any) for the " \
"request. May not be empty"
#define SCOPELIST_TEXT "SLP scopes list"
#define ATTRIDS_TEXT "SLP attribute identifiers"
#define ATTRIDS_LONGTEXT "This string is a comma separated list of " \
"attribute identifiers to search for a playlist "\
"title or empty to use all attributes"
#define SCOPELIST_TEXT "SLP scopes list"
#define SCOPELIST_LONGTEXT "This string is a comma separated list of scope " \
"names or empty if you want to use the default " \
"scopes; it is used in all SLP queries"
#define NAMINGAUTHORITY_TEXT "SLP naming authority"
#define NAMINGAUTHORITY_TEXT
"SLP naming authority"
#define NAMINGAUTHORITY_LONGTEXT "This string is a list of naming " \
"authorities to search. Use \"*\" for all " \
"and the empty string for the default of " \
"IANA"
#define FILTER_TEXT "SLP LDAP filter"
#define FILTER_TEXT
"SLP LDAP filter"
#define FILTER_LONGTEXT "This is a query formulated of attribute pattern " \
"matching expressions in the form of an LDAPv3 " \
"search filter or empty for all answers"
#define LANG_TEXT
"language ask
ed in SLP requests"
#define LANG_TEXT
"language request
ed in SLP requests"
#define LANG_LONGTEXT "RFC 1766 Language Tag for the natural language " \
"locale of requests, leave empty to use the " \
"default locale"
"default locale
; it is used in all SLP queries
"
vlc_module_begin
();
set_description
(
_
(
"SLP access module"
)
);
add_category_hint
(
N_
(
"slp"
),
NULL
);
/* add_string( "slp-srvtype", "service:vls.services.videolan.org:udpm",
NULL, SRVTYPE_TEXT, SRVTYPE_LONGTEXT ); */
add_string
(
"slp-attrids"
,
""
,
NULL
,
ATTRIDS_TEXT
,
ATTRIDS_LONGTEXT
);
add_string
(
"slp-scopelist"
,
""
,
NULL
,
SCOPELIST_TEXT
,
SCOPELIST_LONGTEXT
);
add_string
(
"slp-namingauthority"
,
"*"
,
NULL
,
NAMINGAUTHORITY_TEXT
,
...
...
@@ -88,6 +91,36 @@ vlc_module_begin();
set_callbacks
(
Init
,
End
);
vlc_module_end
();
/*****************************************************************************
* AttrCallback: updates the description of a playlist item
*****************************************************************************/
static
SLPBoolean
AttrCallback
(
SLPHandle
slph_slp
,
const
char
*
psz_attrlist
,
SLPError
slpe_errcode
,
void
*
p_cookie
)
{
playlist_item_t
*
p_playlist_item
=
(
playlist_item_t
*
)
p_cookie
;
/* our callback was only called to tell us there's nothing more to read */
if
(
slpe_errcode
==
SLP_LAST_CALL
)
{
return
SLP_TRUE
;
}
/* or there was a problem with getting the data we requested */
if
(
(
slpe_errcode
!=
SLP_OK
)
)
{
/* msg_Err( (vlc_object_t*)NULL,
"AttrCallback got an error %i with attribute %s",
slpe_errcode,
psz_attrlist ); */
return
SLP_TRUE
;
}
p_playlist_item
->
psz_name
=
strdup
(
psz_attrlist
);
/* NULL is checked */
return
SLP_TRUE
;
}
/*****************************************************************************
* SrvUrlCallback: adds an entry to the playlist
*****************************************************************************/
...
...
@@ -100,7 +133,10 @@ static SLPBoolean SrvUrlCallback( SLPHandle slph_slp,
input_thread_t
*
p_input
=
(
input_thread_t
*
)
p_cookie
;
playlist_t
*
p_playlist
;
char
psz_item
[
42
]
=
"udp:@"
;
char
*
psz_s
;
char
*
psz_s
;
/* to hold the uri of the stream */
SLPHandle
slph_slp3
;
SLPError
slpe_result
;
playlist_item_t
*
p_playlist_item
;
/* our callback was only called to tell us there's nothing more to read */
if
(
slpe_errcode
==
SLP_LAST_CALL
)
...
...
@@ -120,19 +156,57 @@ static SLPBoolean SrvUrlCallback( SLPHandle slph_slp,
/* search the returned address after a double-slash */
psz_s
=
strstr
(
psz_srvurl
,
"//"
);
/* skip the slashes */
psz_s
=
&
psz_s
[
2
];
if
(
psz_s
==
NULL
)
{
msg_Err
(
(
input_thread_t
*
)
p_input
,
"SrvUrlCallback got a
NULL string i
f your libslp"
);
"SrvUrlCallback got a
strange string o
f your libslp"
);
return
SLP_TRUE
;
}
/* skip the slashes */
psz_s
=
&
psz_s
[
2
];
/* add udp:@ in front of the address */
psz_s
=
strncat
(
psz_item
,
psz_s
,
sizeof
(
psz_item
)
-
strlen
(
psz_item
)
-
1
);
/* create a playlist item */
p_playlist_item
=
malloc
(
sizeof
(
playlist_item_t
)
);
if
(
p_playlist_item
==
NULL
)
{
msg_Err
(
p_input
,
"out of memory"
);
return
SLP_TRUE
;
}
p_playlist_item
->
psz_name
=
NULL
;
p_playlist_item
->
psz_uri
=
strdup
(
psz_s
);
p_playlist_item
->
i_type
=
0
;
p_playlist_item
->
i_status
=
0
;
p_playlist_item
->
b_autodeletion
=
VLC_FALSE
;
/* search the description of the stream */
if
(
SLPOpen
(
config_GetPsz
(
p_input
,
"slp-lang"
),
SLP_FALSE
,
/* synchronous ops */
&
slph_slp3
)
==
SLP_OK
)
{
/* search all attributes */
slpe_result
=
SLPFindAttrs
(
slph_slp3
,
psz_srvurl
,
config_GetPsz
(
p_input
,
"slp-scopelist"
),
config_GetPsz
(
p_input
,
"slp-attrids"
),
AttrCallback
,
p_playlist_item
);
/* we're done, clean up */
SLPClose
(
slph_slp3
);
}
/* add a default name if we found no attribute */
if
(
p_playlist_item
->
psz_name
==
NULL
)
{
p_playlist_item
->
psz_name
=
strdup
(
psz_s
);
}
/* search the main playlist object */
p_playlist
=
vlc_object_find
(
(
input_thread_t
*
)
p_input
,
VLC_OBJECT_PLAYLIST
,
...
...
@@ -144,9 +218,10 @@ static SLPBoolean SrvUrlCallback( SLPHandle slph_slp,
return
SLP_TRUE
;
}
playlist_Add
(
p_playlist
,
psz_s
,
PLAYLIST_APPEND
,
PLAYLIST_END
);
playlist_AddItem
(
p_playlist
,
p_playlist_item
,
PLAYLIST_APPEND
,
PLAYLIST_END
);
vlc_object_release
(
(
vlc_object_t
*
)
p_playlist
);
msg_Info
(
(
input_thread_t
*
)
p_input
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment