Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Icecast-Server
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
94
Issues
94
List
Boards
Labels
Service Desk
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
External Wiki
External Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Xiph.Org
Icecast-Server
Commits
728ed857
Commit
728ed857
authored
May 28, 2018
by
Philipp Schafft
🦁
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Cleanup: Massive cleanup of the <resource>-tag handling
parent
07ee2814
Pipeline
#164
passed with stage
in 51 seconds
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
85 additions
and
62 deletions
+85
-62
src/cfgfile.c
src/cfgfile.c
+85
-62
No files found.
src/cfgfile.c
View file @
728ed857
...
...
@@ -552,6 +552,21 @@ static void config_clear_mount(mount_proxy *mount)
free
(
mount
);
}
static
void
config_clear_resource
(
resource_t
*
resource
)
{
resource_t
*
nextresource
;
while
(
resource
)
{
nextresource
=
resource
->
next
;
xmlFree
(
resource
->
source
);
xmlFree
(
resource
->
destination
);
xmlFree
(
resource
->
bind_address
);
xmlFree
(
resource
->
vhost
);
free
(
resource
);
resource
=
nextresource
;
}
}
listener_t
*
config_clear_listener
(
listener_t
*
listener
)
{
listener_t
*
next
=
NULL
;
...
...
@@ -573,8 +588,6 @@ void config_clear(ice_config_t *c)
*
nextrelay
;
mount_proxy
*
mount
,
*
nextmount
;
resource_t
*
resource
,
*
nextresource
;
#ifdef USE_YP
int
i
;
#endif
...
...
@@ -633,16 +646,7 @@ void config_clear(ice_config_t *c)
mount
=
nextmount
;
}
resource
=
c
->
resources
;
while
(
resource
)
{
nextresource
=
resource
->
next
;
xmlFree
(
resource
->
source
);
xmlFree
(
resource
->
destination
);
xmlFree
(
resource
->
bind_address
);
xmlFree
(
resource
->
vhost
);
free
(
resource
);
resource
=
nextresource
;
}
config_clear_resource
(
c
->
resources
);
dirnode
=
c
->
dir_list
;
while
(
dirnode
)
{
...
...
@@ -1900,14 +1904,79 @@ static void _parse_directory(xmlDocPtr doc,
configuration
->
num_yp_directories
++
;
}
static
void
_parse_resource
(
xmlDocPtr
doc
,
xmlNodePtr
node
,
ice_config_t
*
configuration
)
{
char
*
temp
;
resource_t
*
resource
,
*
current
,
*
last
;
resource
=
calloc
(
1
,
sizeof
(
resource_t
));
if
(
resource
==
NULL
)
{
ICECAST_LOG_ERROR
(
"Can not allocate memory for resource."
);
return
;
}
resource
->
next
=
NULL
;
resource
->
source
=
(
char
*
)
xmlGetProp
(
node
,
XMLSTR
(
"source"
));
resource
->
destination
=
(
char
*
)
xmlGetProp
(
node
,
XMLSTR
(
"destination"
));
if
(
!
resource
->
destination
)
resource
->
destination
=
(
char
*
)
xmlGetProp
(
node
,
XMLSTR
(
"dest"
));
if
(
!
resource
->
source
&&
resource
->
destination
)
{
resource
->
source
=
resource
->
destination
;
resource
->
destination
=
NULL
;
}
else
if
(
!
resource
->
source
&&
!
resource
->
destination
)
{
config_clear_resource
(
resource
);
return
;
}
temp
=
(
char
*
)
xmlGetProp
(
node
,
XMLSTR
(
"port"
));
if
(
temp
!=
NULL
)
{
resource
->
port
=
util_str_to_int
(
temp
,
resource
->
port
);
xmlFree
(
temp
);
}
else
{
resource
->
port
=
-
1
;
}
resource
->
bind_address
=
(
char
*
)
xmlGetProp
(
node
,
XMLSTR
(
"bind-address"
));
resource
->
vhost
=
(
char
*
)
xmlGetProp
(
node
,
XMLSTR
(
"vhost"
));
temp
=
(
char
*
)
xmlGetProp
(
node
,
XMLSTR
(
"omode"
));
if
(
temp
)
{
resource
->
omode
=
config_str_to_omode
(
temp
);
xmlFree
(
temp
);
}
else
{
resource
->
omode
=
OMODE_DEFAULT
;
}
temp
=
(
char
*
)
xmlGetProp
(
node
,
XMLSTR
(
"prefixmatch"
));
resource
->
flags
|=
util_str_to_bool
(
temp
)
?
ALIAS_FLAG_PREFIXMATCH
:
0
;
/* Attach new <resource> as last entry into the global list. */
current
=
configuration
->
resources
;
last
=
NULL
;
while
(
current
)
{
last
=
current
;
current
=
current
->
next
;
}
if
(
last
)
{
last
->
next
=
resource
;
}
else
{
configuration
->
resources
=
resource
;
}
}
static
void
_parse_paths
(
xmlDocPtr
doc
,
xmlNodePtr
node
,
ice_config_t
*
configuration
)
{
char
*
temp
;
resource_t
*
resource
,
*
current
,
*
last
;
do
{
if
(
node
==
NULL
)
...
...
@@ -1989,53 +2058,7 @@ static void _parse_paths(xmlDocPtr doc,
if
(
configuration
->
adminroot_dir
[
strlen
(
configuration
->
adminroot_dir
)
-
1
]
==
'/'
)
configuration
->
adminroot_dir
[
strlen
(
configuration
->
adminroot_dir
)
-
1
]
=
0
;
}
else
if
(
xmlStrcmp
(
node
->
name
,
XMLSTR
(
"resource"
))
==
0
||
xmlStrcmp
(
node
->
name
,
XMLSTR
(
"alias"
))
==
0
)
{
resource
=
calloc
(
1
,
sizeof
(
resource_t
));
resource
->
next
=
NULL
;
resource
->
source
=
(
char
*
)
xmlGetProp
(
node
,
XMLSTR
(
"source"
));
resource
->
destination
=
(
char
*
)
xmlGetProp
(
node
,
XMLSTR
(
"destination"
));
if
(
!
resource
->
destination
)
resource
->
destination
=
(
char
*
)
xmlGetProp
(
node
,
XMLSTR
(
"dest"
));
if
(
!
resource
->
source
&&
resource
->
destination
)
{
resource
->
source
=
resource
->
destination
;
resource
->
destination
=
NULL
;
}
else
if
(
!
resource
->
source
&&
!
resource
->
destination
)
{
xmlFree
(
resource
->
source
);
xmlFree
(
resource
->
destination
);
free
(
resource
);
continue
;
}
temp
=
(
char
*
)
xmlGetProp
(
node
,
XMLSTR
(
"port"
));
if
(
temp
!=
NULL
)
{
resource
->
port
=
util_str_to_int
(
temp
,
resource
->
port
);
xmlFree
(
temp
);
}
else
{
resource
->
port
=
-
1
;
}
resource
->
bind_address
=
(
char
*
)
xmlGetProp
(
node
,
XMLSTR
(
"bind-address"
));
resource
->
vhost
=
(
char
*
)
xmlGetProp
(
node
,
XMLSTR
(
"vhost"
));
temp
=
(
char
*
)
xmlGetProp
(
node
,
XMLSTR
(
"omode"
));
if
(
temp
)
{
resource
->
omode
=
config_str_to_omode
(
temp
);
xmlFree
(
temp
);
}
else
{
resource
->
omode
=
OMODE_DEFAULT
;
}
temp
=
(
char
*
)
xmlGetProp
(
node
,
XMLSTR
(
"prefixmatch"
));
resource
->
flags
|=
util_str_to_bool
(
temp
)
?
ALIAS_FLAG_PREFIXMATCH
:
0
;
current
=
configuration
->
resources
;
last
=
NULL
;
while
(
current
)
{
last
=
current
;
current
=
current
->
next
;
}
if
(
last
)
{
last
->
next
=
resource
;
}
else
{
configuration
->
resources
=
resource
;
}
_parse_resource
(
doc
,
node
,
configuration
);
}
}
while
((
node
=
node
->
next
));
}
...
...
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