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
d3c0569c
Commit
d3c0569c
authored
Dec 16, 2015
by
Rémi Denis-Courmont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
tls: remove virtual_socket_t and clean send/recv prototypes up
parent
c2a21b27
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
28 additions
and
58 deletions
+28
-58
include/vlc_common.h
include/vlc_common.h
+0
-1
include/vlc_network.h
include/vlc_network.h
+0
-8
include/vlc_tls.h
include/vlc_tls.h
+2
-1
modules/access/http/transport.c
modules/access/http/transport.c
+2
-2
modules/misc/gnutls.c
modules/misc/gnutls.c
+18
-37
modules/misc/securetransport.c
modules/misc/securetransport.c
+4
-7
src/network/tls.c
src/network/tls.c
+2
-2
No files found.
include/vlc_common.h
View file @
d3c0569c
...
...
@@ -291,7 +291,6 @@ typedef struct filter_t filter_t;
typedef
struct
filter_sys_t
filter_sys_t
;
/* Network */
typedef
struct
virtual_socket_t
v_socket_t
;
typedef
struct
vlc_url_t
vlc_url_t
;
/* Misc */
...
...
include/vlc_network.h
View file @
d3c0569c
...
...
@@ -132,14 +132,6 @@ int net_Subscribe (vlc_object_t *obj, int fd, const struct sockaddr *addr,
VLC_API
int
net_SetCSCov
(
int
fd
,
int
sendcov
,
int
recvcov
);
/* Functions to read from or write to the networking layer */
struct
virtual_socket_t
{
void
*
p_sys
;
int
(
*
pf_recv
)
(
void
*
,
void
*
,
size_t
);
int
(
*
pf_send
)
(
void
*
,
const
void
*
,
size_t
);
};
VLC_API
ssize_t
net_Read
(
vlc_object_t
*
p_this
,
int
fd
,
void
*
p_data
,
size_t
i_data
);
#define net_Read(a,b,c,d) net_Read(VLC_OBJECT(a),b,c,d)
VLC_API
ssize_t
net_Write
(
vlc_object_t
*
p_this
,
int
fd
,
const
void
*
p_data
,
size_t
i_data
);
...
...
include/vlc_tls.h
View file @
d3c0569c
...
...
@@ -43,7 +43,8 @@ struct vlc_tls
void
*
sys
;
int
fd
;
struct
virtual_socket_t
sock
;
ssize_t
(
*
recv
)(
struct
vlc_tls
*
,
void
*
,
size_t
);
ssize_t
(
*
send
)(
struct
vlc_tls
*
,
const
void
*
,
size_t
);
};
/**
...
...
modules/access/http/transport.c
View file @
d3c0569c
...
...
@@ -54,7 +54,7 @@ ssize_t vlc_https_recv(vlc_tls_t *tls, void *buf, size_t len)
while
(
count
<
len
)
{
int
canc
=
vlc_savecancel
();
ssize_t
val
=
tls
->
sock
.
pf_
recv
(
tls
,
(
char
*
)
buf
+
count
,
len
-
count
);
ssize_t
val
=
tls
->
recv
(
tls
,
(
char
*
)
buf
+
count
,
len
-
count
);
vlc_restorecancel
(
canc
);
...
...
@@ -115,7 +115,7 @@ ssize_t vlc_https_send(vlc_tls_t *tls, const void *buf, size_t len)
while
(
count
<
len
)
{
int
canc
=
vlc_savecancel
();
ssize_t
val
=
tls
->
s
ock
.
pf_s
end
(
tls
,
(
char
*
)
buf
+
count
,
len
-
count
);
ssize_t
val
=
tls
->
send
(
tls
,
(
char
*
)
buf
+
count
,
len
-
count
);
vlc_restorecancel
(
canc
);
...
...
modules/misc/gnutls.c
View file @
d3c0569c
...
...
@@ -163,14 +163,11 @@ static ssize_t vlc_gnutls_writev (gnutls_transport_ptr_t ptr,
/**
* Sends data through a TLS session.
*/
static
int
gnutls_Send
(
void
*
opaque
,
const
void
*
buf
,
size_t
length
)
static
ssize_t
gnutls_Send
(
vlc_tls_t
*
tls
,
const
void
*
buf
,
size_t
length
)
{
assert
(
opaque
!=
NULL
);
vlc_tls_t
*
tls
=
opaque
;
gnutls_session_t
session
=
tls
->
sys
;
ssize_t
val
=
gnutls_record_send
(
session
,
buf
,
length
);
int
val
=
gnutls_record_send
(
session
,
buf
,
length
);
return
(
val
<
0
)
?
gnutls_Error
(
tls
,
val
)
:
val
;
}
...
...
@@ -178,14 +175,11 @@ static int gnutls_Send (void *opaque, const void *buf, size_t length)
/**
* Receives data through a TLS session.
*/
static
int
gnutls_Recv
(
void
*
opaque
,
void
*
buf
,
size_t
length
)
static
ssize_t
gnutls_Recv
(
vlc_tls_t
*
tls
,
void
*
buf
,
size_t
length
)
{
assert
(
opaque
!=
NULL
);
vlc_tls_t
*
tls
=
opaque
;
gnutls_session_t
session
=
tls
->
sys
;
ssize_t
val
=
gnutls_record_recv
(
session
,
buf
,
length
);
int
val
=
gnutls_record_recv
(
session
,
buf
,
length
);
return
(
val
<
0
)
?
gnutls_Error
(
tls
,
val
)
:
val
;
}
...
...
@@ -255,9 +249,8 @@ static int gnutls_SessionOpen (vlc_tls_t *tls, int type,
gnutls_transport_set_vec_push_function
(
session
,
vlc_gnutls_writev
);
#endif
tls
->
sys
=
session
;
tls
->
sock
.
p_sys
=
NULL
;
tls
->
sock
.
pf_send
=
gnutls_Send
;
tls
->
sock
.
pf_recv
=
gnutls_Recv
;
tls
->
send
=
gnutls_Send
;
tls
->
recv
=
gnutls_Recv
;
return
VLC_SUCCESS
;
error:
...
...
@@ -332,9 +325,7 @@ static void gnutls_SessionClose (vlc_tls_t *tls)
{
gnutls_session_t
session
=
tls
->
sys
;
if
(
tls
->
sock
.
p_sys
!=
NULL
)
gnutls_bye
(
session
,
GNUTLS_SHUT_WR
);
gnutls_bye
(
session
,
GNUTLS_SHUT_RDWR
);
gnutls_deinit
(
session
);
}
...
...
@@ -375,17 +366,11 @@ static int gnutls_ClientHandshake (vlc_tls_t *tls, const char *host,
{
msg_Err
(
tls
,
"Certificate verification error: %s"
,
gnutls_strerror
(
val
));
failure:
gnutls_bye
(
session
,
GNUTLS_SHUT_RDWR
);
return
-
1
;
}
if
(
status
==
0
)
{
/* Good certificate */
success:
tls
->
sock
.
p_sys
=
tls
;
if
(
status
==
0
)
/* Good certificate */
return
0
;
}
/* Bad certificate */
gnutls_datum_t
desc
;
...
...
@@ -402,7 +387,7 @@ success:
status
&=
~
GNUTLS_CERT_UNEXPECTED_OWNER
;
/* mismatched hostname */
if
(
status
!=
0
||
host
==
NULL
)
goto
failure
;
/* Really bad certificate */
return
-
1
;
/* Really bad certificate */
/* Look up mismatching certificate in store */
const
gnutls_datum_t
*
datum
;
...
...
@@ -412,7 +397,7 @@ success:
if
(
datum
==
NULL
||
count
==
0
)
{
msg_Err
(
tls
,
"Peer certificate not available"
);
goto
failure
;
return
-
1
;
}
msg_Dbg
(
tls
,
"%u certificate(s) in the list"
,
count
);
...
...
@@ -423,7 +408,7 @@ success:
{
case
0
:
msg_Dbg
(
tls
,
"certificate key match for %s"
,
host
);
goto
success
;
return
0
;
case
GNUTLS_E_NO_CERTIFICATE_FOUND
:
msg_Dbg
(
tls
,
"no known certificates for %s"
,
host
);
msg
=
N_
(
"However the security certificate presented by the "
...
...
@@ -439,7 +424,7 @@ success:
default:
msg_Err
(
tls
,
"certificate key match error for %s: %s"
,
host
,
gnutls_strerror
(
val
));
goto
failure
;
return
-
1
;
}
if
(
dialog_Question
(
tls
,
_
(
"Insecure site"
),
...
...
@@ -449,17 +434,17 @@ success:
"If in doubt, abort now.
\n
"
),
_
(
"Abort"
),
_
(
"View certificate"
),
NULL
,
vlc_gettext
(
msg
),
host
)
!=
2
)
goto
failure
;
return
-
1
;
gnutls_x509_crt_t
cert
;
if
(
gnutls_x509_crt_init
(
&
cert
))
goto
failure
;
return
-
1
;
if
(
gnutls_x509_crt_import
(
cert
,
datum
,
GNUTLS_X509_FMT_DER
)
||
gnutls_x509_crt_print
(
cert
,
GNUTLS_CRT_PRINT_ONELINE
,
&
desc
))
{
gnutls_x509_crt_deinit
(
cert
);
goto
failure
;
return
-
1
;
}
gnutls_x509_crt_deinit
(
cert
);
...
...
@@ -482,9 +467,9 @@ success:
if
(
val
)
msg_Err
(
tls
,
"cannot store X.509 certificate: %s"
,
gnutls_strerror
(
val
));
goto
success
;
return
0
;
}
goto
failure
;
return
-
1
;
}
/**
...
...
@@ -558,12 +543,8 @@ static int gnutls_ServerSessionOpen (vlc_tls_creds_t *crd, vlc_tls_t *tls,
static
int
gnutls_ServerHandshake
(
vlc_tls_t
*
tls
,
const
char
*
host
,
const
char
*
service
,
char
**
restrict
alp
)
{
int
val
=
gnutls_ContinueHandshake
(
tls
,
alp
);
if
(
val
==
0
)
tls
->
sock
.
p_sys
=
tls
;
(
void
)
host
;
(
void
)
service
;
return
val
;
return
gnutls_ContinueHandshake
(
tls
,
alp
)
;
}
/**
...
...
modules/misc/securetransport.c
View file @
d3c0569c
...
...
@@ -422,9 +422,8 @@ static int st_Handshake (vlc_tls_t *session, const char *host,
/**
* Sends data through a TLS session.
*/
static
int
st_Send
(
void
*
opaque
,
const
void
*
buf
,
size_t
length
)
static
ssize_t
st_Send
(
vlc_tls_t
*
session
,
const
void
*
buf
,
size_t
length
)
{
vlc_tls_t
*
session
=
opaque
;
vlc_tls_sys_t
*
sys
=
session
->
sys
;
OSStatus
ret
=
noErr
;
...
...
@@ -476,9 +475,8 @@ static int st_Send (void *opaque, const void *buf, size_t length)
/**
* Receives data through a TLS session.
*/
static
int
st_Recv
(
void
*
opaque
,
void
*
buf
,
size_t
length
)
static
ssize_t
st_Recv
(
vlc_tls_t
*
session
,
void
*
buf
,
size_t
length
)
{
vlc_tls_t
*
session
=
opaque
;
vlc_tls_sys_t
*
sys
=
session
->
sys
;
size_t
actualSize
;
...
...
@@ -542,9 +540,8 @@ static int st_SessionOpenCommon (vlc_tls_creds_t *crd, vlc_tls_t *session,
sys
->
p_context
=
NULL
;
session
->
sys
=
sys
;
session
->
sock
.
p_sys
=
session
;
session
->
sock
.
pf_send
=
st_Send
;
session
->
sock
.
pf_recv
=
st_Recv
;
session
->
send
=
st_Send
;
session
->
recv
=
st_Recv
;
crd
->
handshake
=
st_Handshake
;
SSLContextRef
p_context
=
NULL
;
...
...
src/network/tls.c
View file @
d3c0569c
...
...
@@ -235,7 +235,7 @@ int vlc_tls_Read(vlc_tls_t *session, void *buf, size_t len, bool waitall)
return
-
1
;
}
ssize_t
val
=
session
->
sock
.
pf_
recv
(
session
,
buf
,
len
);
ssize_t
val
=
session
->
recv
(
session
,
buf
,
len
);
if
(
val
>
0
)
{
if
(
!
waitall
)
...
...
@@ -268,7 +268,7 @@ int vlc_tls_Write(vlc_tls_t *session, const void *buf, size_t len)
return
-
1
;
}
ssize_t
val
=
session
->
s
ock
.
pf_s
end
(
session
,
buf
,
len
);
ssize_t
val
=
session
->
send
(
session
,
buf
,
len
);
if
(
val
>
0
)
{
buf
=
((
const
char
*
)
buf
)
+
val
;
...
...
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