Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Xiph.Org
Icecast-Server
Commits
231e60a4
Commit
231e60a4
authored
Sep 20, 2018
by
Philipp Schafft
🦁
Browse files
Updated submodules
parent
9a4491e4
Changes
2
Hide whitespace changes
Inline
Side-by-side
common
@
ad5fc100
Compare
09fb1ce1
...
ad5fc100
Subproject commit
09fb1ce13780543827013ebf52ef71c226484bd4
Subproject commit
ad5fc1006122f42abd34ade3f42bf2779297140d
src/format.c
View file @
231e60a4
...
...
@@ -287,6 +287,37 @@ int format_advance_queue(source_t *source, client_t *client)
* calling functions will use a already freed client struct and
* cause a segfault!
*/
static
inline
ssize_t
__print_var
(
char
*
str
,
size_t
remaining
,
const
char
*
format
,
const
char
*
first
,
const
http_var_t
*
var
)
{
size_t
i
;
ssize_t
done
=
0
;
int
ret
;
for
(
i
=
0
;
i
<
var
->
values
;
i
++
)
{
ret
=
snprintf
(
str
+
done
,
remaining
-
done
,
format
,
first
,
var
->
value
[
i
]);
if
(
ret
==
-
1
)
return
-
1
;
done
+=
ret
;
}
return
done
;
}
static
inline
const
char
*
__find_bitrate
(
const
http_var_t
*
var
)
{
size_t
i
;
const
char
*
ret
;
for
(
i
=
0
;
i
<
var
->
values
;
i
++
)
{
ret
=
strstr
(
var
->
value
[
i
],
"bitrate="
);
if
(
ret
)
return
ret
;
}
return
NULL
;
}
static
int
format_prepare_headers
(
source_t
*
source
,
client_t
*
client
)
{
size_t
remaining
;
...
...
@@ -337,11 +368,11 @@ static int format_prepare_headers (source_t *source, client_t *client)
if
(
!
strcasecmp
(
var
->
name
,
"ice-audio-info"
))
{
/* convert ice-audio-info to icy-br */
char
*
brfield
=
NULL
;
const
char
*
brfield
=
NULL
;
unsigned
int
bitrate
;
if
(
bitrate_filtered
==
0
)
brfield
=
strstr
(
var
->
value
,
"bitrate="
);
brfield
=
__find_bitrate
(
var
);
if
(
brfield
&&
sscanf
(
brfield
,
"bitrate=%u"
,
&
bitrate
))
{
bytes
=
snprintf
(
ptr
,
remaining
,
"icy-br:%u
\r\n
"
,
bitrate
);
...
...
@@ -350,7 +381,7 @@ static int format_prepare_headers (source_t *source, client_t *client)
}
else
/* show ice-audio_info header as well because of relays */
bytes
=
sn
print
f
(
ptr
,
remaining
,
"%s: %s
\r\n
"
,
var
->
name
,
var
->
value
);
bytes
=
__
print
_var
(
ptr
,
remaining
,
"%s: %s
\r\n
"
,
var
->
name
,
var
);
}
else
{
...
...
@@ -368,26 +399,24 @@ static int format_prepare_headers (source_t *source, client_t *client)
if
(
mountinfo
&&
mountinfo
->
stream_name
)
bytes
=
snprintf
(
ptr
,
remaining
,
"icy-name:%s
\r\n
"
,
mountinfo
->
stream_name
);
else
bytes
=
sn
print
f
(
ptr
,
remaining
,
"icy-
name
:%s
\r\n
"
,
var
->
value
);
bytes
=
__
print
_var
(
ptr
,
remaining
,
"icy-
%s
:%s
\r\n
"
,
"name"
,
var
);
config_release_config
();
}
else
if
(
!
strncasecmp
(
"ice-"
,
var
->
name
,
4
))
{
if
(
!
strcasecmp
(
"ice-public"
,
var
->
name
))
bytes
=
sn
print
f
(
ptr
,
remaining
,
"icy-
pub
:%s
\r\n
"
,
var
->
value
);
bytes
=
__
print
_var
(
ptr
,
remaining
,
"icy-
%s
:%s
\r\n
"
,
"pub"
,
var
);
else
if
(
!
strcasecmp
(
"ice-bitrate"
,
var
->
name
))
bytes
=
sn
print
f
(
ptr
,
remaining
,
"icy-
br
:%s
\r\n
"
,
var
->
value
);
bytes
=
__
print
_var
(
ptr
,
remaining
,
"icy-
%s
:%s
\r\n
"
,
"br"
,
var
);
else
bytes
=
snprintf
(
ptr
,
remaining
,
"icy%s:%s
\r\n
"
,
var
->
name
+
3
,
var
->
value
);
bytes
=
__print_var
(
ptr
,
remaining
,
"icy%s:%s
\r\n
"
,
var
->
name
+
3
,
var
);
}
else
if
(
!
strncasecmp
(
"icy-"
,
var
->
name
,
4
))
{
bytes
=
snprintf
(
ptr
,
remaining
,
"icy%s:%s
\r\n
"
,
var
->
name
+
3
,
var
->
value
);
bytes
=
__print_var
(
ptr
,
remaining
,
"icy%s:%s
\r\n
"
,
var
->
name
+
3
,
var
);
}
}
}
...
...
Write
Preview
Supports
Markdown
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