Go to the documentation of this file.
25 #ifndef _PLAYLIST_ART_H
26 #define _PLAYLIST_ART_H 1
32 const void *,
size_t,
const char *psz_type );
int i_buffer
Definition: httpd.c:154
void EndMD5(struct md5_s *h)
Definition: md5.c:345
int vlc_loaddir(DIR *dir, char ***namelist, int(*select)(const char *), int(*compar)(const char **, const char **))
Does the same as vlc_scandir(), but takes an open directory pointer instead of a directory path.
Definition: filesystem.c:110
httpd_host_t * vlc_http_HostNew(vlc_object_t *p_this)
Definition: httpd.c:860
Definition: vlc_httpd.h:61
int i_header
Definition: httpd.c:596
char * psz_algorithm
Definition: vlc_http.h:47
httpd_host_t * host
Definition: httpd.c:107
int playlist_FindArtInCacheUsingItemUID(input_item_t *p_item)
Definition: art.c:230
Structure containing information about the playlist.
Definition: vlc_playlist.h:151
int net_SetCSCov(int fd, int sendcov, int recvcov)
net_SetCSCov: Sets the send and receive checksum coverage of a socket:
Definition: udp.c:684
int64_t i_buffer_last_pos
Definition: httpd.c:610
#define AI_IDN
Definition: vlc_network.h:194
size_t count
Definition: core.c:461
ssize_t net_Printf(vlc_object_t *p_this, int fd, const char *psz_fmt,...)
Definition: io.c:383
int * fds
Definition: httpd.c:81
static ssize_t vlc_tls_SocketWrite(vlc_tls_t *tls, const struct iovec *iov, unsigned count)
Definition: tls.c:367
static ssize_t vlc_send_i11e(int fd, const void *buf, size_t len, int flags)
Definition: vlc_interrupt.h:132
static int net_SourceSubscribe(vlc_object_t *obj, int fd, const struct sockaddr *src, socklen_t srclen, const struct sockaddr *grp, socklen_t grplen)
IP-agnostic multicast join, with fallback to old APIs, and fallback from SSM to ASM.
Definition: udp.c:311
#define TAB_CLEAN(count, tab)
Definition: vlc_arrays.h:46
FILE * vlc_fopen(const char *filename, const char *mode)
Opens a FILE pointer.
Definition: filesystem.c:46
Definition: vlc_httpd.h:48
#define net_ListenTCP(a, b, c)
Definition: vlc_network.h:129
uint8_t * p_body
Definition: vlc_httpd.h:104
#define VLC_COMMON_MEMBERS
Backward compatibility macro.
Definition: vlc_common.h:453
static ssize_t vlc_tls_ConnectWrite(vlc_tls_t *tls, const struct iovec *iov, unsigned count)
Definition: tls.c:521
httpd_callback_t cb
Definition: httpd.c:117
Definition: vlc_httpd.h:80
int playlist_SaveArt(vlc_object_t *obj, input_item_t *p_item, const void *data, size_t length, const char *psz_type)
Definition: art.c:267
void vlc_restorecancel(int state)
Restores the cancellation state.
Definition: thread.c:323
#define vlc_cleanup_push(routine, arg)
Registers a thread cancellation handler.
Definition: vlc_threads.h:975
int64_t i_last_keyframe_seen_pos
Definition: httpd.c:604
static int tls_client_load(void *func, va_list ap)
Definition: tls.c:69
void vlc_http_auth_Deinit(vlc_http_auth_t *p_auth)
Definition: http_auth.c:491
char * vlc_http_auth_FormatAuthorizationHeader(vlc_object_t *p_this, vlc_http_auth_t *p_auth, const char *psz_method, const char *psz_path, const char *psz_username, const char *psz_password)
Definition: http_auth.c:385
char * vlc_xml_encode(const char *str)
Encodes XML entites.
Definition: strings.c:288
static ssize_t vlc_tls_SocketRead(vlc_tls_t *tls, struct iovec *iov, unsigned count)
Definition: tls.c:355
static size_t httpd_HtmlError(char **body, int code, const char *url)
Definition: httpd.c:256
int rootwrap_bind(int family, int socktype, int protocol, const struct sockaddr *addr, size_t alen)
Tries to obtain a bound TCP socket from the root process.
Definition: rootbind.c:114
int strcasecmp(const char *, const char *)
ssize_t(* writev)(struct vlc_tls *, const struct iovec *, unsigned)
Definition: vlc_tls.h:47
static int net_SetDSCP(int fd, uint8_t dscp)
Definition: udp.c:477
ssize_t vlc_tls_Write(vlc_tls_t *session, const void *buf, size_t len)
Sends data through a socket.
Definition: tls.c:268
Definition: vlc_httpd.h:40
#define vlc_module_load(o, c, n, s,...)
Definition: vlc_modules.h:39
char * vlc_tls_GetLine(vlc_tls_t *session)
Receives a text line through a socket.
Definition: tls.c:307
void vlc_rand_bytes(void *buf, size_t len)
Definition: rand.c:27
Definition: vlc_httpd.h:59
vlc_thread_t thread
Definition: httpd.c:85
int net_OpenDgram(vlc_object_t *obj, const char *psz_bind, int i_bind, const char *psz_server, int i_server, int protocol)
Definition: udp.c:599
#define EMPTY_STR(str)
Definition: vlc_common.h:768
TLS credentials.
Definition: vlc_tls.h:67
#define SOL_TCP
Definition: tls.c:47
static char * GetFileByItemUID(char *psz_dir, const char *psz_type)
Definition: art.c:220
#define SOL_IPV6
Definition: udp.c:61
Definition: vlc_httpd.h:42
Definition: vlc_http.h:40
#define DIR_SEP
Definition: vlc_common.h:1023
int i_status
Definition: vlc_httpd.h:89
#define VLC_THREAD_PRIORITY_LOW
Definition: vlc_threads.h:321
Definition: vlc_httpd.h:46
static bool net_SockAddrIsMulticast(const struct sockaddr *addr, socklen_t len)
Definition: vlc_network.h:211
int playlist_MuteGet(playlist_t *pl)
Definition: aout.c:89
size_t i_buffer
Payload length.
Definition: vlc_block.h:116
int httpd_StreamSetHTTPHeaders(httpd_stream_t *p_stream, const httpd_header *p_headers, size_t i_headers)
Definition: httpd.c:2056
#define var_InheritInteger(o, n)
Definition: vlc_variables.h:612
int vlc_pipe(int fds[2])
Creates a pipe (see "man pipe" for further reference).
Definition: filesystem.c:263
static httpd_host_t * httpd_HostCreate(vlc_object_t *, const char *, const char *, vlc_tls_creds_t *)
Definition: httpd.c:902
static const char * httpd_ReasonFromCode(unsigned i_code)
Definition: httpd.c:173
char * psz_nonce
Definition: vlc_http.h:44
httpd_file_t * httpd_FileNew(httpd_host_t *host, const char *psz_url, const char *psz_mime, const char *psz_user, const char *psz_password, httpd_file_callback_t pf_fill, httpd_file_sys_t *p_sys)
Definition: httpd.c:350
void httpd_RedirectDelete(httpd_redirect_t *rdir)
Definition: httpd.c:578
int fd
Definition: vlc_fixups.h:416
ssize_t vlc_tls_Read(vlc_tls_t *session, void *buf, size_t len, bool waitall)
Receives data through a socket.
Definition: tls.c:227
httpd_file_callback_t pf_fill
Definition: httpd.c:296
static int httpd_ClientSend(httpd_client_t *cl)
Definition: httpd.c:1563
Definition: vlc_httpd.h:51
httpd_message_t answer
Definition: httpd.c:166
#define CMSG_LEN(len)
Definition: rootbind.c:57
httpd_host_t ** host
Definition: httpd.c:898
static const struct @72 msg_type[]
#define CMSG_SPACE(len)
Definition: rootbind.c:54
char * psz_cnonce
Definition: vlc_http.h:50
int rootwrap_bind(int, int, int, const struct sockaddr *, size_t)
Tries to obtain a bound TCP socket from the root process.
Definition: rootbind.c:114
int * net_Listen(vlc_object_t *p_this, const char *psz_host, int i_port, int type, int protocol)
Definition: io.c:104
int vlc_mkdir(const char *dirname, mode_t mode)
Creates a directory.
Definition: filesystem.c:93
static char * AuthGetParam(const char *psz_header, const char *psz_param)
Definition: http_auth.c:43
char * httpd_ServerIP(const httpd_client_t *cl, char *ip, int *port)
Definition: httpd.c:1201
const char * httpd_MsgGet(const httpd_message_t *msg, const char *name)
Definition: httpd.c:1145
Definition: vlc_fixups.h:414
int vlc_scandir(const char *dirname, char ***namelist, int(*select)(const char *), int(*compar)(const char **, const char **))
Selects file entries from a directory, as GNU C scandir().
Definition: filesystem.c:177
char * psz_stale
Definition: vlc_http.h:46
static int tls_server_load(void *func, va_list ap)
Definition: tls.c:59
char mime[1]
Definition: httpd.c:298
vlc_cond_t wait
Definition: httpd.c:87
static vlc_tls_t * vlc_tls_SocketAddrInfo(const struct addrinfo *restrict info)
Allocates an unconnected transport layer socket.
Definition: tls.c:448
int(* httpd_file_callback_t)(httpd_file_sys_t *, httpd_file_t *, uint8_t *psz_request, uint8_t **pp_data, int *pi_data)
Definition: vlc_httpd.h:125
static void vlc_socket_setup(int fd, bool nonblock)
Definition: filesystem.c:307
int httpd_StreamHeader(httpd_stream_t *stream, uint8_t *p_data, int i_data)
Definition: httpd.c:783
Transport layer socket.
Definition: vlc_tls.h:43
Definition: playlist_internal.h:46
struct vlc_tls * p
Definition: vlc_tls.h:51
static char * GenerateCnonce()
Definition: http_auth.c:85
Definition: vlc_httpd.h:62
#define msg_Dbg(p_this,...)
Definition: vlc_messages.h:86
static char * xstrdup(const char *str)
Definition: vlc_common.h:994
static ssize_t httpd_NetRecv(httpd_client_t *cl, uint8_t *p, size_t i_len)
Definition: httpd.c:1231
Definition: vlc_httpd.h:41
void(* close)(struct vlc_tls *)
Definition: vlc_tls.h:49
static void httpd_AppendData(httpd_stream_t *stream, uint8_t *p_data, int i_data)
Definition: httpd.c:799
const char psz_ext[7]
Definition: image.c:581
long pathconf(const char *path, int name)
int poll(struct pollfd *, unsigned, int)
#define O_TMPFILE
Definition: filesystem.c:45
ssize_t() net_Write(vlc_object_t *obj, int fd, const void *buf, size_t len)
Writes data to a socket.
Definition: io.c:287
struct httpd_url_t::@73 catch[HTTPD_MSG_MAX]
#define VLC_EGENERIC
Unspecified error.
Definition: vlc_common.h:350
int vlc_getaddrinfo_i11e(const char *name, unsigned port, const struct addrinfo *hints, struct addrinfo **res)
Definition: getaddrinfo.c:38
static char * ArtCachePath(input_item_t *p_item)
Definition: art.c:105
static void cleanup_tls(void *data)
Definition: tls.c:161
uint8_t i_type
Definition: vlc_httpd.h:84
int vlc_clone(vlc_thread_t *th, void *(*entry)(void *), void *data, int priority)
Creates and starts a new thread.
Definition: thread.c:263
int vlc_stat(const char *filename, struct stat *buf)
Finds file/inode information - like stat().
Definition: filesystem.c:170
void playlist_EnableAudioFilter(playlist_t *pl, const char *name, bool add)
Definition: aout.c:115
int vlc_poll_i11e(struct pollfd *fds, unsigned nfds, int timeout)
Interruptible variant of poll().
Definition: interrupt.c:372
static char * getenv(const char *name)
Definition: vlc_fixups.h:293
int vlc_getaddrinfo(const char *node, unsigned port, const struct addrinfo *hints, struct addrinfo **res)
Resolves a host name to a list of socket addresses (like getaddrinfo()).
Definition: getaddrinfo.c:77
struct vlc_tls_socket vlc_tls_socket_t
#define lstat(a, b)
Definition: filesystem.c:40
void vlc_cond_signal(vlc_cond_t *p_condvar)
Wakes up one thread waiting on a condition variable.
Definition: thread.c:256
static int net_SetMcastHopLimit(vlc_object_t *p_this, int fd, int family, int hlim)
Definition: udp.c:202
char * vlc_b64_decode(const char *psz_src)
Definition: strings.c:468
static int vlc_tls_WaitConnect(vlc_tls_t *tls)
Waits for pending transport layer socket connection.
Definition: tls.c:469
#define var_InheritString(o, n)
Definition: vlc_variables.h:639
int playlist_FindArtInCache(input_item_t *)
Definition: art.c:161
char * vlc_b64_encode(const char *src)
Definition: strings.c:395
pthread_cond_t vlc_cond_t
Condition variable.
Definition: vlc_threads.h:279
static void httpd_MsgInit(httpd_message_t *msg)
Definition: httpd.c:1112
char * psz_url
Definition: vlc_httpd.h:92
input_resource_t * p_input_resource
input resources
Definition: playlist_internal.h:59
char * vlc_gettext(const char *msgid)
In-tree plugins share their gettext domain with LibVLC.
Definition: textdomain.c:89
httpd_header * p_http_headers
Definition: httpd.c:614
int asprintf(char **, const char *,...)
int vlc_http_auth_ParseAuthenticationInfoHeader(vlc_object_t *p_this, vlc_http_auth_t *p_auth, const char *psz_header, const char *psz_method, const char *psz_path, const char *psz_username, const char *psz_password)
Definition: http_auth.c:306
short revents
Definition: vlc_fixups.h:418
httpd_url_t * url
Definition: httpd.c:399
float playlist_VolumeGet(playlist_t *pl)
Definition: aout.c:45
httpd_url_t * url
Definition: httpd.c:517
unsigned nfd
Definition: httpd.c:82
static int vlc_tls_SocketGetFD(vlc_tls_t *tls)
Definition: tls.c:348
char * strndup(const char *, size_t)
static char * ArtCacheName(input_item_t *p_item, const char *psz_type)
Definition: art.c:138
int net_Subscribe(vlc_object_t *obj, int fd, const struct sockaddr *grp, socklen_t grplen)
Definition: udp.c:393
#define net_errno
Definition: vlc_network.h:56
void AddMD5(struct md5_s *restrict h, const void *data, size_t len)
Definition: md5.c:340
char * vlc_getcwd(void)
Determines the current working directory.
Definition: filesystem.c:215
static int dummy_select(const char *str)
Definition: filesystem.c:100
static void httpdLoop(httpd_host_t *host)
Definition: httpd.c:1695
static char * GetDirByItemUIDs(char *psz_uid)
Definition: art.c:205
#define net_Close(fd)
Definition: vlc_network.h:57
static bool httpdAuthOk(const char *user, const char *pass, const char *b64)
Definition: httpd.c:1655
bool aout_ChangeFilterString(vlc_object_t *manager, vlc_object_t *aout, const char *var, const char *name, bool b_add)
Definition: common.c:538
int module_Load(vlc_object_t *p_this, const char *psz_file, module_handle_t *p_handle, bool lazy)
Load a dynamically linked library using a system dependent method.
Definition: plugin.c:49
int i_buffer_size
Definition: httpd.c:153
int i_proto
Definition: httpd.c:1251
bool vlc_killed(void)
Checks if the interruption context was "killed".
Definition: interrupt.c:186
mtime_t i_activity_date
Definition: httpd.c:149
#define CLOCK_FREQ
Definition: vlc_config.h:45
char * vlc_ngettext(const char *msgid, const char *plural, unsigned long n)
Definition: textdomain.c:98
#define msg_Warn(p_this,...)
Definition: vlc_messages.h:84
void vlc_tls_Delete(vlc_tls_creds_t *crd)
Releases TLS credentials.
Definition: tls.c:128
int vlc_lstat(const char *filename, struct stat *buf)
Finds file/inode information, as lstat().
Definition: filesystem.c:175
static int httpd_FileCallBack(httpd_callback_sys_t *p_sys, httpd_client_t *cl, httpd_message_t *answer, const httpd_message_t *query)
Definition: httpd.c:301
Audio output object.
Definition: vlc_aout.h:114
size_t i_http_headers
Definition: httpd.c:613
Definition: vlc_httpd.h:49
mtime_t i_activity_timeout
Definition: httpd.c:150
struct sockaddr peer[]
Definition: tls.c:345
void * p_sys
Definition: httpd.c:402
int vlc_close(int fd)
Closes a file descriptor.
Definition: filesystem.c:88
int net_Socket(vlc_object_t *p_this, int family, int socktype, int protocol)
Definition: io.c:53
#define vlc_object_release(a)
Definition: vlc_objects.h:63
httpd_url_t * httpd_UrlNew(httpd_host_t *host, const char *psz_url, const char *psz_user, const char *psz_password)
Definition: httpd.c:1037
void filename_sanitize(char *str)
Sanitize a file name.
Definition: strings.c:875
#define AI_NUMERICSERV
Definition: vlc_network.h:191
#define MSG_NOSIGNAL
Definition: rootbind.c:63
int vlc_memfd(void)
Creates an anonymous regular file descriptor, i.e.
Definition: filesystem.c:82
int vlc_rename(const char *oldpath, const char *newpath)
Moves a file atomically.
Definition: filesystem.c:194
int net_Accept(vlc_object_t *p_this, int *pi_fd)
Accepts an new connection on a set of listening sockets.
Definition: tcp.c:271
int vlc_tls_SocketPair(int family, int protocol, vlc_tls_t *pair[2])
Creates a connected pair of transport-layer sockets.
Definition: tls.c:419
int vlc_unlink(const char *filename)
Removes a file.
Definition: filesystem.c:180
int playlist_SaveArt(vlc_object_t *, input_item_t *, const void *, size_t, const char *psz_type)
Definition: art.c:267
int i_type
Definition: httpd.c:1250
void httpd_MsgAdd(httpd_message_t *msg, const char *name, const char *psz_value,...)
Definition: httpd.c:1153
void vlc_testcancel(void)
Issues an explicit deferred cancellation point.
Definition: thread.c:331
float aout_VolumeGet(audio_output_t *aout)
Gets the volume of the audio output stream (independent of mute).
Definition: output.c:727
int i_ref
Definition: httpd.c:144
#define VLC_TS_INVALID
Definition: vlc_config.h:42
char * psz_user
Definition: httpd.c:112
Definition: vlc_httpd.h:60
struct httpd_callback_sys_t httpd_callback_sys_t
Definition: vlc_httpd.h:109
int(* shutdown)(struct vlc_tls *, bool duplex)
Definition: vlc_tls.h:48
ssize_t(* readv)(struct vlc_tls *, struct iovec *, unsigned)
Definition: vlc_tls.h:46
httpd_handler_callback_t pf_fill
Definition: httpd.c:401
static void vlc_socket_setup(int fd, bool nonblock)
Definition: filesystem.c:282
uint8_t * psz_args
Definition: vlc_httpd.h:95
int i_body
Definition: vlc_httpd.h:103
void * module_handle_t
The plugin handle type.
Definition: modules.h:29
#define POLLOUT
Definition: vlc_fixups.h:412
Definition: vlc_httpd.h:47
uint32_t i_flags
Definition: vlc_block.h:120
#define ToLocaleDup
Definition: vlc_charset.h:253
static void httpd_ClientDestroy(httpd_client_t *cl)
Definition: httpd.c:1206
int vlc_open(const char *filename, int flags,...)
Opens a system file handle.
Definition: filesystem.c:49
int net_Socket(vlc_object_t *p_this, int i_family, int i_socktype, int i_protocol)
Definition: io.c:53
void * httpd_HandlerDelete(httpd_handler_t *handler)
Definition: httpd.c:504
int playlist_VolumeUp(playlist_t *pl, int value, float *volp)
Raises the volume.
Definition: aout.c:76
void httpd_StreamDelete(httpd_stream_t *stream)
Definition: httpd.c:838
audio_output_t * playlist_GetAout(playlist_t *pl)
Definition: aout.c:35
void vlc_http_auth_ParseWwwAuthenticateHeader(vlc_object_t *p_this, vlc_http_auth_t *p_auth, const char *psz_header)
Definition: http_auth.c:228
httpd_client_t ** client
Definition: httpd.c:98
struct httpd_file_sys_t httpd_file_sys_t
Definition: vlc_httpd.h:124
#define SOL_IP
Definition: udp.c:58
static int net_ListenSingle(vlc_object_t *obj, const char *host, int port, int protocol)
Definition: udp.c:142
void httpd_HostDelete(httpd_host_t *host)
Definition: httpd.c:995
int aout_MuteSet(audio_output_t *aout, bool mute)
Sets the audio output stream mute flag.
Definition: output.c:791
vlc_mutex_t lock
Definition: httpd.c:589
int64_t i_buffer_pos
Definition: httpd.c:609
int net_Socket(vlc_object_t *p_this, int i_family, int i_socktype, int i_protocol)
Definition: io.c:53
httpd_url_t * url
Definition: httpd.c:295
static int vlc_tls_GetFD(vlc_tls_t *tls)
Definition: vlc_tls.h:187
module_t * module
Definition: vlc_tls.h:71
#define TAB_APPEND(count, tab, p)
Definition: vlc_arrays.h:64
DIR * vlc_opendir(const char *dirname)
Opens a DIR pointer.
Definition: filesystem.c:107
unsigned i_ref
Definition: httpd.c:78
short events
Definition: vlc_fixups.h:417
ssize_t recvmsg(int, struct msghdr *, int)
static char * GetWindowsError(void)
Definition: plugin.c:76
#define var_Type(a, b)
Definition: vlc_variables.h:130
int vlc_mkstemp(char *template)
Definition: filesystem.c:99
Definition: vlc_httpd.h:54
char * psz_realm
Definition: vlc_http.h:42
Thread handle.
Definition: vlc_threads.h:252
static void SetWBE(void *p, uint16_t w)
Writes 16 bits in network byte order.
Definition: vlc_common.h:864
httpd_callback_sys_t * p_sys
Definition: httpd.c:118
FILE * vlc_win32_tmpfile(void)
Definition: filesystem.c:359
void vlc_mutex_init(vlc_mutex_t *p_mutex)
Initializes a fast mutex.
Definition: thread.c:85
int playlist_FindArtInCache(input_item_t *p_item)
Definition: art.c:161
int(* httpd_callback_t)(httpd_callback_sys_t *, httpd_client_t *, httpd_message_t *answer, const httpd_message_t *query)
Definition: vlc_httpd.h:110
void httpd_UrlDelete(httpd_url_t *url)
Definition: httpd.c:1084
#define SOL_UDPLITE
Definition: udp.c:73
int i_url
Definition: httpd.c:93
#define vlc_cleanup_pop()
Unregisters the last cancellation handler.
Definition: vlc_threads.h:983
int httpd_UrlCatch(httpd_url_t *url, int i_msg, httpd_callback_t cb, httpd_callback_sys_t *p_sys)
Definition: httpd.c:1072
#define POLLIN
Definition: vlc_fixups.h:411
const char * psz_mime
Definition: image.c:629
static void vlc_tls_Close(vlc_tls_t *session)
Closes a connection and its underlying resources.
Definition: vlc_tls.h:257
vlc_tls_t * vlc_tls_ServerSessionCreate(vlc_tls_creds_t *crd, vlc_tls_t *sock, const char *const *alpn)
Creates a TLS server session.
Definition: tls.c:220
Definition: vlc_httpd.h:45
#define static_assert
Definition: vlc_fixups.h:367
int net_Connect(vlc_object_t *p_this, const char *psz_host, int i_port, int type, int proto)
Definition: tcp.c:67
static int httpd_StreamCallBack(httpd_callback_sys_t *p_sys, httpd_client_t *cl, httpd_message_t *answer, const httpd_message_t *query)
Definition: httpd.c:616
static int recv_fd(int p)
Receive a file descriptor from another process.
Definition: rootbind.c:74
char * psz_HA1
Definition: vlc_http.h:51
void module_Unload(module_handle_t handle)
CloseModule: unload a dynamic library.
Definition: plugin.c:76
int playlist_VolumeSet(playlist_t *pl, float vol)
Definition: aout.c:58
int playlist_FindArtInCacheUsingItemUID(input_item_t *)
Definition: art.c:230
static int SocksHandshakeTCP(vlc_object_t *, int fd, int i_socks_version, const char *psz_user, const char *psz_passwd, const char *psz_host, int i_port)
Definition: tcp.c:424
vlc_tls_t * vlc_tls_SocketOpenTCP(vlc_object_t *obj, const char *name, unsigned port)
Creates a transport-layer TCP stream from a name and port.
Definition: tls.c:586
ssize_t net_vaPrintf(vlc_object_t *p_this, int fd, const char *psz_fmt, va_list args)
Definition: io.c:395
int httpd_StreamSend(httpd_stream_t *stream, const block_t *p_block)
Definition: httpd.c:817
static int vlc_statEx(const char *filename, struct stat *buf, bool deref)
Definition: filesystem.c:155
DWORD LoadLibraryFlags
Definition: specific.c:41
httpd_header * p_headers
Definition: vlc_httpd.h:99
int us_vasprintf(char **ret, const char *format, va_list ap)
us_vasprintf() has the same prototype as vasprintf(), but doesn't use the system locale.
Definition: charset.c:97
static void * xmalloc(size_t len)
Definition: vlc_common.h:970
ssize_t sendmsg(int, const struct msghdr *, int)
static char * ArtCacheGetDirPath(const char *psz_arturl, const char *psz_artist, const char *psz_album, const char *psz_title)
Definition: art.c:60
#define DIR_SEP_CHAR
Definition: vlc_common.h:1022
#define likely(p)
Definition: vlc_common.h:113
static void httpd_ClientInit(httpd_client_t *cl, mtime_t now)
Definition: httpd.c:1181
The main vlc_object_t structure.
Definition: vlc_objects.h:39
int vlc_savecancel(void)
Disables thread cancellation.
Definition: thread.c:313
ssize_t vlc_write(int fd, const void *buf, size_t len)
Writes data to a file descriptor.
Definition: filesystem.c:277
uint8_t i_state
Definition: httpd.c:147
static void vlc_tls_SocketClose(vlc_tls_t *tls)
Definition: tls.c:384
#define VLC_ENOMEM
Not enough memory.
Definition: vlc_common.h:351
static ssize_t httpd_NetSend(httpd_client_t *cl, const uint8_t *p, size_t i_len)
Definition: httpd.c:1239
vlc_tls_t * sock
Definition: httpd.c:142
#define VLC_UNUSED(x)
Definition: vlc_common.h:912
pthread_mutex_t vlc_mutex_t
Mutex.
Definition: vlc_threads.h:267
#define VLC_SUCCESS
No error.
Definition: vlc_common.h:349
char * psz_mime
Definition: httpd.c:592
long vlc_mrand48(void)
PRNG uniformly distributed between -2^32 and 2^32 - 1.
Definition: rand.c:98
httpd_stream_t * httpd_StreamNew(httpd_host_t *host, const char *psz_url, const char *psz_mime, const char *psz_user, const char *psz_password)
Definition: httpd.c:741
vlc_tls_t * vlc_tls_SocketOpen(int fd)
Creates a transport-layer stream from a socket.
Definition: tls.c:414
char * strdup(const char *)
vlc_tls_t *(* open)(struct vlc_tls_creds *, vlc_tls_t *sock, const char *host, const char *const *alpn)
Definition: vlc_tls.h:74
int(* httpd_handler_callback_t)(void *, httpd_handler_t *, char *psz_url, uint8_t *psz_request, int i_type, uint8_t *p_in, int i_in, char *psz_remote_addr, char *psz_remote_host, uint8_t **pp_data, int *pi_data)
Definition: vlc_httpd.h:131
vlc_tls_creds_t * p_tls
Definition: httpd.c:101
struct vlc_tls tls
Definition: tls.c:342
char psz_value[8]
Definition: vout_intf.c:91
httpd_host_t * vlc_rtsp_HostNew(vlc_object_t *p_this)
Definition: httpd.c:889
vlc_mutex_t lock
Definition: httpd.c:86
static int net_SetupDgramSocket(vlc_object_t *p_obj, int fd, const struct addrinfo *ptr)
Definition: udp.c:91
int64_t i_body_offset
Definition: vlc_httpd.h:102
Definition: vlc_configuration.h:124
#define vlc_custom_create(o, s, n)
Definition: libvlc.h:108
size_t i_headers
Definition: vlc_httpd.h:98
#define SOL_DCCP
Definition: udp.c:67
static int httpd_RedirectCallBack(httpd_callback_sys_t *p_sys, httpd_client_t *cl, httpd_message_t *answer, const httpd_message_t *query)
Definition: httpd.c:520
static int net_GetSockAddress(int fd, char *address, int *port)
Definition: vlc_network.h:240
httpd_url_t * url
Definition: httpd.c:141
char * net_Gets(vlc_object_t *obj, int fd)
Reads a line from a file descriptor.
Definition: io.c:334
const char name[16]
Definition: httpd.c:1249
int aout_MuteGet(audio_output_t *aout)
Gets the audio output stream mute flag.
Definition: output.c:782
void vlc_cond_destroy(vlc_cond_t *p_condvar)
Deinitializes a condition variable.
Definition: thread.c:228
bool b_stream_mode
Definition: httpd.c:146
char * config_GetUserDir(vlc_userdir_t type)
Definition: specific.c:272
void vlc_cond_init(vlc_cond_t *p_condvar)
Initializes a condition variable.
Definition: thread.c:216
Definition: fourcc_gen.c:50
void vlc_cond_wait(vlc_cond_t *p_condvar, vlc_mutex_t *p_mutex)
Waits on a condition variable.
Definition: thread.c:267
static char * psz_md5_hash(struct md5_s *md5_s)
Returns a char representation of the md5 hash, as shown by UNIX md5 or md5sum tools.
Definition: vlc_md5.h:48
httpd_host_t * vlc_https_HostNew(vlc_object_t *obj)
Definition: httpd.c:865
char * psz_domain
Definition: vlc_http.h:43
static ssize_t vlc_tls_Connect(vlc_tls_t *tls)
Connects a transport layer socket.
Definition: tls.c:504
httpd_file_sys_t * p_sys
Definition: httpd.c:297
int playlist_MuteSet(playlist_t *pl, bool mute)
Definition: aout.c:102
static void * xrealloc(void *ptr, size_t len)
Definition: vlc_common.h:978
char * vlc_path2uri(const char *path, const char *scheme)
Converts local path to URL.
Definition: url.c:138
#define TAB_REMOVE(count, tab, p)
Definition: vlc_arrays.h:91
socklen_t peerlen
Definition: tls.c:344
#define net_Read(a, b, c, d)
Definition: vlc_network.h:170
void vlc_mutex_destroy(vlc_mutex_t *p_mutex)
Deinitializes a mutex.
Definition: thread.c:110
char dst[1]
Definition: httpd.c:518
char * psz_url
Definition: httpd.c:111
unsigned port
Definition: httpd.c:83
vlc_tls_t * vlc_tls_ClientSessionCreate(vlc_tls_creds_t *crd, vlc_tls_t *sock, const char *host, const char *service, const char *const *alpn, char **alp)
Initiates a client TLS session.
Definition: tls.c:169
vlc_tls_t * vlc_tls_SocketOpenAddrInfo(const struct addrinfo *restrict info, bool defer_connect)
Definition: tls.c:563
void vlc_mutex_unlock(vlc_mutex_t *p_mutex)
Releases a mutex.
Definition: thread.c:138
ssize_t() net_Read(vlc_object_t *restrict obj, int fd, void *restrict buf, size_t len)
Reads data from a socket, blocking until all requested data is received or the end of the stream is r...
Definition: io.c:231
#define unlikely(p)
Definition: vlc_common.h:114
static int net_GetPeerAddress(int fd, char *address, int *port)
Definition: vlc_network.h:251
char * psz_qop
Definition: vlc_http.h:48
void net_ListenClose(int *pi_fd)
Definition: tcp.c:527
#define pl_priv(pl)
Definition: playlist_internal.h:95
httpd_handler_t * httpd_HandlerNew(httpd_host_t *host, const char *psz_url, const char *psz_user, const char *psz_password, httpd_handler_callback_t pf_fill, void *p_sys)
Definition: httpd.c:475
#define net_Write(a, b, c, d)
Definition: vlc_network.h:172
void vlc_http_auth_Init(vlc_http_auth_t *p_auth)
Definition: http_auth.c:486
vlc_tls_creds_t * vlc_tls_ClientCreate(vlc_object_t *obj)
Allocates TLS credentials for a client.
Definition: tls.c:109
void * module_Lookup(module_handle_t handle, const char *psz_function)
Looks up a symbol from a dynamically loaded library.
Definition: plugin.c:92
uint8_t * p_header
Definition: httpd.c:595
#define IPPROTO_IPV6
Definition: udp.c:64
static char * AuthGetParamNoQuotes(const char *psz_header, const char *psz_param)
Definition: http_auth.c:63
static void tls_unload(void *func, va_list ap)
Definition: tls.c:77
const char * vlc_strerror_c(int errnum)
Definition: error.c:34
static int vlc_tls_SessionHandshake(vlc_tls_creds_t *crd, vlc_tls_t *tls)
Definition: vlc_tls.h:101
int vlc_openat(int dir, const char *filename, int flags,...)
Opens a system file handle relative to an existing directory handle.
Definition: filesystem.c:75
static int vlc_tls_SocketShutdown(vlc_tls_t *tls, bool duplex)
Definition: tls.c:379
bool b_no_timeout
Definition: httpd.c:96
static char * AuthDigest(vlc_object_t *p_this, vlc_http_auth_t *p_auth, const char *psz_method, const char *psz_path, const char *psz_username, const char *psz_password)
Definition: http_auth.c:99
#define vlc_assert_unreachable()
Definition: vlc_common.h:118
vlc_mutex_t mutex
Definition: httpd.c:896
void vlc_cancel(vlc_thread_t thread_id)
Marks a thread as cancelled.
Definition: thread.c:297
int64_t mtime_t
High precision date or time interval.
Definition: vlc_common.h:150
int vlc_bindtextdomain(const char *domain)
Definition: textdomain.c:32
int(* get_fd)(struct vlc_tls *)
Definition: vlc_tls.h:45
Definition: vlc_httpd.h:50
Definition: vlc_fixups.h:443
static int httpd_HandlerCallBack(httpd_callback_sys_t *p_sys, httpd_client_t *cl, httpd_message_t *answer, const httpd_message_t *query)
Definition: httpd.c:406
uint8_t i_proto
Definition: vlc_httpd.h:85
uint8_t * p_buffer
Payload start.
Definition: vlc_block.h:115
httpd_url_t * url
Definition: httpd.c:590
void vlc_tls_SessionDelete(vlc_tls_t *session)
Destroys a TLS session down.
Definition: tls.c:154
httpd_message_t query
Definition: httpd.c:165
Definition: vlc_httpd.h:34
httpd_client_t * cl
Definition: vlc_httpd.h:82
int fd
Definition: tls.c:343
int vlc_socketpair(int pf, int type, int proto, int fds[2], bool nonblock)
Creates a pair of socket file descriptors.
Definition: filesystem.c:323
static wchar_t * widen_path(const char *path)
Definition: filesystem.c:50
static void httpd_ClientTlsHandshake(httpd_host_t *host, httpd_client_t *cl)
Definition: httpd.c:1644
int vlc_dup(int oldfd)
Duplicates a file descriptor.
Definition: filesystem.c:252
#define vlc_module_unload(o, m, d,...)
Definition: vlc_modules.h:43
int aout_VolumeSet(audio_output_t *aout, float vol)
Sets the volume of the audio output stream.
Definition: output.c:737
char * psz_password
Definition: httpd.c:113
#define VLC_OBJECT(x)
Type-safe vlc_object_t cast.
Definition: vlc_common.h:464
int i_client
Definition: httpd.c:97
httpd_file_sys_t * httpd_FileDelete(httpd_file_t *file)
Definition: httpd.c:385
bool b_has_keyframes
Definition: httpd.c:603
int vlc_accept(int lfd, struct sockaddr *addr, socklen_t *alen, bool nonblock)
Accepts an inbound connection request on a listening socket.
Definition: filesystem.c:333
char * httpd_ClientIP(const httpd_client_t *cl, char *ip, int *port)
Definition: httpd.c:1196
const char * vlc_readdir(DIR *dir)
Reads the next file name from an open directory.
Definition: filesystem.c:123
int i_buffer_size
Definition: httpd.c:607
static void * vlc_alloc(size_t count, size_t size)
Definition: vlc_common.h:948
mtime_t mdate(void)
Precision monotonic clock.
Definition: thread.c:406
vlc_tls_creds_t * vlc_tls_ServerCreate(vlc_object_t *obj, const char *cert_path, const char *key_path)
Allocates server TLS credentials.
Definition: tls.c:86
int(* handshake)(struct vlc_tls_creds *, vlc_tls_t *session, const char *hostname, const char *service, char **alp)
Definition: vlc_tls.h:76
#define RUNNING_ON_VALGRIND
Definition: thread.c:156
void InitMD5(struct md5_s *h)
Definition: md5.c:335
uint8_t * p_buffer
Definition: httpd.c:608
vlc_mutex_t lock
Definition: httpd.c:109
static int SocksNegotiate(vlc_object_t *, int fd, int i_socks_version, const char *psz_user, const char *psz_passwd)
Definition: tcp.c:325
static void * httpd_HostThread(void *)
Definition: httpd.c:2045
#define VLC_STATIC_MUTEX
Static initializer for (static) mutex.
Definition: vlc_threads.h:272
static ssize_t vlc_recv_i11e(int fd, void *buf, size_t len, int flags)
Definition: vlc_interrupt.h:126
ssize_t vlc_writev(int fd, const struct iovec *iov, int count)
Writes data from an iovec structure to a file descriptor.
Definition: filesystem.c:284
uint8_t * p_buffer
Definition: httpd.c:155
const char * vlc_mime_Ext2Mime(const char *psz_url)
Definition: mime.c:89
#define NI_MAXNUMERICHOST
Definition: vlc_network.h:188
char * FromCharset(const char *charset, const void *data, size_t data_size)
Converts a string from the given character encoding to utf-8.
Definition: unicode.c:235
#define if_nametoindex(name)
Definition: vlc_fixups.h:436
static vlc_tls_t * vlc_tls_SocketAlloc(int fd, const struct sockaddr *restrict peer, socklen_t peerlen)
Definition: tls.c:390
static int httpd_ClientRecv(httpd_client_t *cl)
Definition: httpd.c:1269
void vlc_mutex_lock(vlc_mutex_t *p_mutex)
Acquires a mutex.
Definition: thread.c:123
int aout_VolumeUpdate(audio_output_t *aout, int value, float *volp)
Raises the volume.
Definition: output.c:756
Definition: vlc_block.h:111
static unsigned var_GetIfIndex(vlc_object_t *obj)
Definition: udp.c:292
int i_nonce
Definition: vlc_http.h:49
vlc_tls_t * vlc_tls_SocketOpenTLS(vlc_tls_creds_t *creds, const char *name, unsigned port, const char *service, const char *const *alpn, char **alp)
Initiates a TLS session over TCP.
Definition: tls.c:626
#define msg_Err(p_this,...)
Definition: vlc_messages.h:82
httpd_redirect_t * httpd_RedirectNew(httpd_host_t *host, const char *psz_url_dst, const char *psz_url_src)
Definition: httpd.c:550
int vasprintf(char **, const char *, va_list)
int i_host
Definition: httpd.c:899
static void httpd_MsgClean(httpd_message_t *msg)
Definition: httpd.c:1132
Definition: vlc_httpd.h:37
#define HTTPD_CL_BUFSIZE
Definition: httpd.c:66
httpd_url_t ** url
Definition: httpd.c:94
int net_ConnectDgram(vlc_object_t *p_this, const char *psz_host, int i_port, int i_hlim, int proto)
Definition: udp.c:515
void vlc_join(vlc_thread_t handle, void **result)
Waits for a thread to complete (if needed), then destroys it.
Definition: thread.c:270
static httpd_client_t * httpd_ClientNew(vlc_tls_t *sock, mtime_t now)
Definition: httpd.c:1216
int vlc_socket(int pf, int type, int proto, bool nonblock)
Creates a socket file descriptor.
Definition: filesystem.c:315
int64_t i_keyframe_wait_to_pass
Definition: httpd.c:162
static vlc_tls_t * vlc_tls_SessionCreate(vlc_tls_creds_t *crd, vlc_tls_t *sock, const char *host, const char *const *alpn)
Definition: tls.c:140
uint16_t i_port
Definition: keystore.c:210
char * psz_opaque
Definition: vlc_http.h:45
#define mutex_cleanup_push(lock)
Definition: vlc_threads.h:1013
int net_AcceptSingle(vlc_object_t *obj, int lfd)
Definition: tcp.c:239
uint8_t i_version
Definition: vlc_httpd.h:86
#define BLOCK_FLAG_TYPE_I
Intra frame.
Definition: vlc_block.h:68
static void ArtCacheCreateDir(const char *psz_dir)
Definition: art.c:40
static void vlc_cloexec(int fd)
Definition: filesystem.c:52
static int net_SetMcastOut(vlc_object_t *p_this, int fd, int family, const char *iface)
Definition: udp.c:253
char * config_GetDataDir(void)
Definition: dirs.c:94