Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Icecast-Server
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
100
Issues
100
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
External Wiki
External Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Xiph.Org
Icecast-Server
Commits
58848cbe
Commit
58848cbe
authored
May 18, 2018
by
Philipp Schafft
🦁
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Feature: Allow listen sockets to be of type "virtual"
parent
75be23b5
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
34 additions
and
7 deletions
+34
-7
cfgfile.c
src/cfgfile.c
+2
-0
cfgfile.h
src/cfgfile.h
+3
-1
listensocket.c
src/listensocket.c
+28
-6
listensocket.h
src/listensocket.h
+1
-0
No files found.
src/cfgfile.c
View file @
58848cbe
...
...
@@ -178,6 +178,8 @@ static listener_type_t config_str_to_listener_type(const char *str)
return
LISTENER_TYPE_NORMAL
;
}
else
if
(
strcasecmp
(
str
,
"normal"
)
==
0
)
{
return
LISTENER_TYPE_NORMAL
;
}
else
if
(
strcasecmp
(
str
,
"virtual"
)
==
0
)
{
return
LISTENER_TYPE_VIRTUAL
;
}
else
{
ICECAST_LOG_ERROR
(
"Unknown listener type
\"
%s
\"
, falling back to NORMAL."
,
str
);
return
LISTENER_TYPE_NORMAL
;
...
...
src/cfgfile.h
View file @
58848cbe
...
...
@@ -148,7 +148,9 @@ typedef struct _resource {
}
resource_t
;
typedef
enum
_listener_type_tag
{
LISTENER_TYPE_NORMAL
LISTENER_TYPE_ERROR
,
LISTENER_TYPE_NORMAL
,
LISTENER_TYPE_VIRTUAL
}
listener_type_t
;
typedef
struct
_listener_t
{
...
...
src/listensocket.c
View file @
58848cbe
...
...
@@ -290,13 +290,19 @@ int listensocket_container_setup(listensocket_container_
}
static
int
listensocket_container_setup__unlocked
(
listensocket_container_t
*
self
)
{
listener_type_t
type
;
size_t
i
;
int
ret
=
0
;
for
(
i
=
0
;
i
<
self
->
sock_len
;
i
++
)
{
if
(
self
->
sockref
[
i
])
{
listensocket_apply_config
(
self
->
sock
[
i
]);
}
else
{
listensocket_apply_config
(
self
->
sock
[
i
]);
type
=
listensocket_get_type
(
self
->
sock
[
i
]);
if
(
self
->
sockref
[
i
]
&&
type
==
LISTENER_TYPE_VIRTUAL
)
{
if
(
listensocket_unrefsock
(
self
->
sock
[
i
])
==
0
)
{
self
->
sockref
[
i
]
=
0
;
}
}
else
if
(
!
self
->
sockref
[
i
]
&&
type
!=
LISTENER_TYPE_VIRTUAL
)
{
if
(
listensocket_refsock
(
self
->
sock
[
i
])
==
0
)
{
self
->
sockref
[
i
]
=
1
;
}
else
{
...
...
@@ -540,10 +546,12 @@ static int listensocket_apply_config__unlocked(listensocket_t *self
listener
=
self
->
listener
;
}
if
(
listener
->
so_sndbuf
)
sock_set_send_buffer
(
self
->
sock
,
listener
->
so_sndbuf
);
if
(
self
->
sock
!=
SOCK_ERROR
)
{
if
(
listener
->
so_sndbuf
)
sock_set_send_buffer
(
self
->
sock
,
listener
->
so_sndbuf
);
sock_set_blocking
(
self
->
sock
,
0
);
sock_set_blocking
(
self
->
sock
,
0
);
}
if
(
self
->
listener_update
)
{
while
((
self
->
listener
=
config_clear_listener
(
self
->
listener
)));
...
...
@@ -706,6 +714,20 @@ int listensocket_release_listener(listensocket_t *self)
return
0
;
}
listener_type_t
listensocket_get_type
(
listensocket_t
*
self
)
{
listener_type_t
ret
;
if
(
!
self
)
return
LISTENER_TYPE_ERROR
;
thread_mutex_lock
(
&
self
->
lock
);
ret
=
self
->
listener
->
type
;
thread_mutex_unlock
(
&
self
->
lock
);
return
ret
;
}
#ifdef HAVE_POLL
static
inline
int
listensocket__poll_fill
(
listensocket_t
*
self
,
struct
pollfd
*
p
)
{
...
...
src/listensocket.h
View file @
58848cbe
...
...
@@ -25,5 +25,6 @@ int listensocket_unrefsock(listensocket_t *self);
connection_t
*
listensocket_accept
(
listensocket_t
*
self
);
const
listener_t
*
listensocket_get_listener
(
listensocket_t
*
self
);
int
listensocket_release_listener
(
listensocket_t
*
self
);
listener_type_t
listensocket_get_type
(
listensocket_t
*
self
);
#endif
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