Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-2-2
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-2-2
Commits
1df637dd
Commit
1df637dd
authored
Jun 25, 2003
by
Sam Hocevar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* src/stream_output/announce.c:
+ Fixed a multiline string. + Coding style fixes.
parent
209f2eaf
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
105 additions
and
109 deletions
+105
-109
src/stream_output/announce.c
src/stream_output/announce.c
+105
-109
No files found.
src/stream_output/announce.c
View file @
1df637dd
...
@@ -47,26 +47,25 @@
...
@@ -47,26 +47,25 @@
/*****************************************************************************
/*****************************************************************************
* sout_SAPNew: Creates a SAP Session
* sout_SAPNew: Creates a SAP Session
*****************************************************************************/
*****************************************************************************/
sap_session_t
*
sout_SAPNew
(
sout_instance_t
*
p_sout
,
sap_session_t
*
sout_SAPNew
(
sout_instance_t
*
p_sout
,
char
*
psz_url_arg
,
char
*
psz_port_arg
,
char
*
psz_url_arg
,
char
*
psz_port_arg
,
char
*
psz_name_arg
,
int
ip_version
,
char
*
psz_name_arg
,
int
ip_version
,
char
*
psz_v6_scope
)
char
*
psz_v6_scope
)
{
{
sap_session_t
*
p_new
;
/* The SAP structure */
sap_session_t
*
p_new
;
/* The SAP structure */
module_t
*
p_network
;
/* Network module */
module_t
*
p_network
;
/* Network module */
network_socket_t
socket_desc
;
/* Socket descriptor */
network_socket_t
socket_desc
;
/* Socket descriptor */
char
psz_network
[
6
];
/* IPv4 or IPv6 */
char
psz_network
[
6
];
/* IPv4 or IPv6 */
char
*
sap_ipv6_addr
=
NULL
;
/* IPv6 built address */
char
*
sap_ipv6_addr
=
NULL
;
/* IPv6 built address */
/* Allocate the SAP structure */
/* Allocate the SAP structure */
p_new
=
(
sap_session_t
*
)
malloc
(
sizeof
(
sap_session_t
)
)
;
p_new
=
(
sap_session_t
*
)
malloc
(
sizeof
(
sap_session_t
)
)
;
if
(
!
p_new
)
if
(
!
p_new
)
{
{
msg_Err
(
p_sout
,
"No memory left"
);
msg_Err
(
p_sout
,
"No memory left"
);
return
NULL
;
return
NULL
;
}
}
/* Fill the information in the structure */
/* Fill the information in the structure */
sprintf
(
p_new
->
psz_url
,
"%s"
,
psz_url_arg
);
sprintf
(
p_new
->
psz_url
,
"%s"
,
psz_url_arg
);
sprintf
(
p_new
->
psz_name
,
"%s"
,
psz_name_arg
);
sprintf
(
p_new
->
psz_name
,
"%s"
,
psz_name_arg
);
...
@@ -74,12 +73,12 @@ sap_session_t * sout_SAPNew ( sout_instance_t *p_sout ,
...
@@ -74,12 +73,12 @@ sap_session_t * sout_SAPNew ( sout_instance_t *p_sout ,
sprintf
(
p_new
->
psz_port
,
"%s"
,
psz_port_arg
);
sprintf
(
p_new
->
psz_port
,
"%s"
,
psz_port_arg
);
p_new
->
i_ip_version
=
ip_version
;
p_new
->
i_ip_version
=
ip_version
;
/* Only "6" triggers IPv6. IPv4 is default */
/* Only "6" triggers IPv6. IPv4 is default */
if
(
ip_version
!=
6
)
if
(
ip_version
!=
6
)
{
{
msg_Dbg
(
p_sout
,
"Creating IPv4 SAP socket"
);
msg_Dbg
(
p_sout
,
"Creating IPv4 SAP socket"
);
/* Fill the socket descriptor */
/* Fill the socket descriptor */
socket_desc
.
i_type
=
NETWORK_UDP
;
socket_desc
.
i_type
=
NETWORK_UDP
;
socket_desc
.
psz_bind_addr
=
""
;
socket_desc
.
psz_bind_addr
=
""
;
...
@@ -87,9 +86,9 @@ sap_session_t * sout_SAPNew ( sout_instance_t *p_sout ,
...
@@ -87,9 +86,9 @@ sap_session_t * sout_SAPNew ( sout_instance_t *p_sout ,
socket_desc
.
psz_server_addr
=
SAP_IPV4_ADDR
;
socket_desc
.
psz_server_addr
=
SAP_IPV4_ADDR
;
socket_desc
.
i_server_port
=
SAP_PORT
;
socket_desc
.
i_server_port
=
SAP_PORT
;
socket_desc
.
i_handle
=
0
;
socket_desc
.
i_handle
=
0
;
/* Call the network module */
/* Call the network module */
sprintf
(
psz_network
,
"ipv4"
);
sprintf
(
psz_network
,
"ipv4"
);
p_sout
->
p_private
=
(
void
*
)
&
socket_desc
;
p_sout
->
p_private
=
(
void
*
)
&
socket_desc
;
if
(
!
(
p_network
=
module_Need
(
p_sout
,
"network"
,
psz_network
)
)
)
if
(
!
(
p_network
=
module_Need
(
p_sout
,
"network"
,
psz_network
)
)
)
{
{
...
@@ -97,42 +96,41 @@ sap_session_t * sout_SAPNew ( sout_instance_t *p_sout ,
...
@@ -97,42 +96,41 @@ sap_session_t * sout_SAPNew ( sout_instance_t *p_sout ,
return
NULL
;
return
NULL
;
}
}
module_Unneed
(
p_sout
,
p_network
);
module_Unneed
(
p_sout
,
p_network
);
p_new
->
socket
=
socket_desc
.
i_handle
;
p_new
->
socket
=
socket_desc
.
i_handle
;
if
(
p_new
->
socket
<=
0
)
if
(
p_new
->
socket
<=
0
)
{
{
msg_Warn
(
p_sout
,
"Unable to initialize SAP"
);
msg_Warn
(
p_sout
,
"Unable to initialize SAP"
);
return
NULL
;
return
NULL
;
}
}
}
}
else
else
{
{
msg_Dbg
(
p_sout
,
"Creating IPv6 SAP socket with scope %s"
msg_Dbg
(
p_sout
,
"Creating IPv6 SAP socket with scope %s"
,
psz_v6_scope
);
,
psz_v6_scope
);
/* Initialize and build the IPv6 address to broadcast to */
/* Initialize and build the IPv6 address to broadcast to */
sap_ipv6_addr
=
(
char
*
)
malloc
(
28
*
sizeof
(
char
));
sap_ipv6_addr
=
(
char
*
)
malloc
(
28
*
sizeof
(
char
));
if
(
!
sap_ipv6_addr
)
if
(
!
sap_ipv6_addr
)
{
{
msg_Err
(
p_sout
,
"No memory left"
);
msg_Err
(
p_sout
,
"No memory left"
);
return
NULL
;
return
NULL
;
}
}
sprintf
(
sap_ipv6_addr
,
"%s%c%s"
,
sprintf
(
sap_ipv6_addr
,
"%s%c%s"
,
SAP_IPV6_ADDR_1
,
SAP_IPV6_ADDR_1
,
psz_v6_scope
[
0
],
psz_v6_scope
[
0
],
SAP_IPV6_ADDR_2
);
SAP_IPV6_ADDR_2
);
/* Fill the socket descriptor */
/* Fill the socket descriptor */
socket_desc
.
i_type
=
NETWORK_UDP
;
socket_desc
.
i_type
=
NETWORK_UDP
;
socket_desc
.
psz_bind_addr
=
""
;
socket_desc
.
psz_bind_addr
=
""
;
socket_desc
.
i_bind_port
=
0
;
socket_desc
.
i_bind_port
=
0
;
socket_desc
.
psz_server_addr
=
sap_ipv6_addr
;
socket_desc
.
psz_server_addr
=
sap_ipv6_addr
;
socket_desc
.
i_server_port
=
SAP_PORT
;
socket_desc
.
i_server_port
=
SAP_PORT
;
socket_desc
.
i_handle
=
0
;
socket_desc
.
i_handle
=
0
;
sprintf
(
psz_network
,
"ipv6"
);
sprintf
(
psz_network
,
"ipv6"
);
/* Call the network module */
/* Call the network module */
p_sout
->
p_private
=
(
void
*
)
&
socket_desc
;
p_sout
->
p_private
=
(
void
*
)
&
socket_desc
;
if
(
!
(
p_network
=
module_Need
(
p_sout
,
"network"
,
psz_network
)
)
)
if
(
!
(
p_network
=
module_Need
(
p_sout
,
"network"
,
psz_network
)
)
)
...
@@ -141,137 +139,135 @@ sap_session_t * sout_SAPNew ( sout_instance_t *p_sout ,
...
@@ -141,137 +139,135 @@ sap_session_t * sout_SAPNew ( sout_instance_t *p_sout ,
return
NULL
;
return
NULL
;
}
}
module_Unneed
(
p_sout
,
p_network
);
module_Unneed
(
p_sout
,
p_network
);
p_new
->
socket
=
socket_desc
.
i_handle
;
p_new
->
socket
=
socket_desc
.
i_handle
;
if
(
p_new
->
socket
<=
0
)
if
(
p_new
->
socket
<=
0
)
{
{
msg_Warn
(
p_sout
,
"Unable to initialize SAP"
);
msg_Warn
(
p_sout
,
"Unable to initialize SAP"
);
return
NULL
;
return
NULL
;
}
}
/* Free what we allocated */
/* Free what we allocated */
if
(
sap_ipv6_addr
)
free
(
sap_ipv6_addr
);
if
(
sap_ipv6_addr
)
free
(
sap_ipv6_addr
);
}
}
msg_Dbg
(
p_sout
,
"SAP initialization complete"
);
msg_Dbg
(
p_sout
,
"SAP initialization complete"
);
return
(
p_new
);
return
(
p_new
);
}
}
/*****************************************************************************
/*****************************************************************************
* sout_SAPDelete: Deletes a SAP Session
* sout_SAPDelete: Deletes a SAP Session
*****************************************************************************/
*****************************************************************************/
void
sout_SAPDelete
(
sout_instance_t
*
p_sout
,
sap_session_t
*
p_this
)
void
sout_SAPDelete
(
sout_instance_t
*
p_sout
,
sap_session_t
*
p_this
)
{
{
if
(
close
(
p_this
->
socket
)
)
if
(
close
(
p_this
->
socket
)
)
msg_Err
(
p_sout
,
"Unable to close SAP socket"
);
{
msg_Err
(
p_sout
,
"Unable to close SAP socket"
);
if
(
p_this
)
free
(
p_this
);
}
}
if
(
p_this
)
free
(
p_this
);
}
/*****************************************************************************
/*****************************************************************************
* sout_SAPSend: Sends a SAP packet
* sout_SAPSend: Sends a SAP packet
*****************************************************************************/
*****************************************************************************/
void
sout_SAPSend
(
sout_instance_t
*
p_sout
,
sap_session_t
*
p_this
)
void
sout_SAPSend
(
sout_instance_t
*
p_sout
,
sap_session_t
*
p_this
)
{
{
char
*
sap_head
;
/* SAP header */
char
*
sap_head
;
/* SAP header */
char
sap_msg
[
1000
];
/* SDP content */
char
sap_msg
[
1000
];
/* SDP content */
char
*
sap_send
;
/* What we send */
char
*
sap_send
;
/* What we send */
char
*
payload_type
=
"application/sdp"
;
char
*
payload_type
=
"application/sdp"
;
int
i_send_result
=
0
;
/* Result of send */
int
i_send_result
=
0
;
/* Result of send */
int
i
;
int
i
;
int
i_header_size
;
/* SAP header size */
int
i_header_size
;
/* SAP header size */
int
i_msg_size
;
/* SDP content size */
int
i_msg_size
;
/* SDP content size */
int
i_size
;
/* Total size */
int
i_size
;
/* Total size */
/* We send a packet every 24 calls to the function */
/* We send a packet every 24 calls to the function */
if
(
p_this
->
sendnow
==
24
)
if
(
p_this
->
sendnow
==
24
)
{
{
i_header_size
=
9
+
strlen
(
payload_type
);
i_header_size
=
9
+
strlen
(
payload_type
);
sap_head
=
(
char
*
)
malloc
(
i_header_size
*
sizeof
(
char
)
);
sap_head
=
(
char
*
)
malloc
(
i_header_size
*
sizeof
(
char
)
);
if
(
!
sap_head
)
if
(
!
sap_head
)
{
{
msg_Warn
(
p_sout
,
"No memory left"
);
msg_Warn
(
p_sout
,
"No memory left"
);
return
;
return
;
}
}
/* Create the SAP headers */
/* Create the SAP headers */
sap_head
[
0
]
=
0x20
;
/* Means IPv4, not encrypted, not compressed */
sap_head
[
0
]
=
0x20
;
/* Means IPv4, not encrypted, not compressed */
sap_head
[
1
]
=
0x00
;
/* No authentification */
sap_head
[
1
]
=
0x00
;
/* No authentification */
sap_head
[
2
]
=
0x42
;
/* Version */
sap_head
[
2
]
=
0x42
;
/* Version */
sap_head
[
3
]
=
0x12
;
/* Version */
sap_head
[
3
]
=
0x12
;
/* Version */
sap_head
[
4
]
=
0x01
;
/* Source IP FIXME: we should get the real address */
sap_head
[
4
]
=
0x01
;
/* Source IP FIXME: we should get the real address */
sap_head
[
5
]
=
0x02
;
/* idem */
sap_head
[
5
]
=
0x02
;
/* idem */
sap_head
[
6
]
=
0x03
;
/* idem */
sap_head
[
6
]
=
0x03
;
/* idem */
sap_head
[
7
]
=
0x04
;
/* idem */
sap_head
[
7
]
=
0x04
;
/* idem */
strncpy
(
sap_head
+
8
,
payload_type
,
15
);
strncpy
(
sap_head
+
8
,
payload_type
,
15
);
sap_head
[
i_header_size
-
1
]
=
'\0'
;
sap_head
[
i_header_size
-
1
]
=
'\0'
;
/* Create the SDP content */
/* Create the SDP content */
/* Do not add spaces at beginning of the lines ! */
/* Do not add spaces at beginning of the lines ! */
sprintf
(
sap_msg
,
"v=0
\n
\
sprintf
(
sap_msg
,
"v=0
\n
"
o=VideoLAN 3247692199 3247895918 IN IP4 VideoLAN
\n
\
"o=VideoLAN 3247692199 3247895918 IN IP4 VideoLAN
\n
"
s=%s
\n
\
"s=%s
\n
"
u=VideoLAN
\n
\
"u=VideoLAN
\n
"
t=0 0
\n
\
"t=0 0
\n
"
m=audio %s udp 14
\n
\
"m=audio %s udp 14
\n
"
c=IN IP4 %s/15
\n
\
"c=IN IP4 %s/15
\n
"
a=type:test
\n
"
,
p_this
->
psz_name
,
p_this
->
psz_port
,
p_this
->
psz_url
);
"a=type:test
\n
"
,
p_this
->
psz_name
,
p_this
->
psz_port
,
p_this
->
psz_url
);
i_msg_size
=
strlen
(
sap_msg
);
i_size
=
i_msg_size
+
i_header_size
;
i_msg_size
=
strlen
(
sap_msg
);
i_size
=
i_msg_size
+
i_header_size
;
/* Create the message */
sap_send
=
(
char
*
)
malloc
(
i_size
*
sizeof
(
char
)
);
/* Create the message */
if
(
!
sap_send
)
sap_send
=
(
char
*
)
malloc
(
i_size
*
sizeof
(
char
)
);
{
if
(
!
sap_send
)
msg_Err
(
p_sout
,
"No memory left"
)
;
{
return
;
msg_Err
(
p_sout
,
"No memory left"
)
;
}
return
;
}
for
(
i
=
0
;
i
<
i_header_size
;
i
++
)
{
for
(
i
=
0
;
i
<
i_header_size
;
i
++
)
sap_send
[
i
]
=
sap_head
[
i
];
{
}
sap_send
[
i
]
=
sap_head
[
i
];
}
for
(
;
i
<
i_size
;
i
++
)
{
for
(
;
i
<
i_size
;
i
++
)
sap_send
[
i
]
=
sap_msg
[
i
-
i_header_size
];
{
}
sap_send
[
i
]
=
sap_msg
[
i
-
i_header_size
];
}
if
(
i_size
<
1024
)
/* We mustn't send packets larger than 1024B */
{
if
(
i_size
<
1024
)
/* We mustn't send packets larger than 1024B */
if
(
p_this
->
i_ip_version
==
6
)
{
{
if
(
p_this
->
i_ip_version
==
6
)
i_send_result
=
send
(
p_this
->
socket
,
sap_send
,
{
i_size
,
0
);
i_send_result
=
send
(
p_this
->
socket
,
sap_send
,
i_size
,
0
);
}
}
else
else
{
{
i_send_result
=
send
(
p_this
->
socket
,
sap_send
,
i_send_result
=
send
(
p_this
->
socket
,
sap_send
,
i_size
,
0
);
i_size
,
0
);
}
}
}
}
if
(
i_send_result
==
-
1
)
if
(
i_send_result
==
-
1
)
{
{
msg_Warn
(
p_sout
,
"SAP send failed on socket %i"
,
p_this
->
socket
);
msg_Warn
(
p_sout
,
"SAP Send failed on socket %i. "
,
perror
(
"sendto"
);
p_this
->
socket
);
}
perror
(
"sendto"
);
}
p_this
->
sendnow
=
0
;
p_this
->
sendnow
=
0
;
/* Free what we allocated */
if
(
sap_send
)
free
(
sap_send
);
/* Free what we allocated */
if
(
sap_head
)
free
(
sap_head
);
if
(
sap_send
)
free
(
sap_send
);
}
if
(
sap_head
)
free
(
sap_head
);
}
p_this
->
sendnow
++
;
p_this
->
sendnow
++
;
}
}
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