mirror of
https://git.code.sf.net/p/minidlna/git
synced 2025-03-30 04:08:05 +00:00
If our response buffer fills up to the max buffer size on a UPnP Browse request, we should return short results rather than erroring out. Fixes: #314 (Cannot browse MiniDLNA 1.2.1 with VLC 2.2.6 (UPnPError 709: Unsupported or invalid sort criteria))
114 lines
2.8 KiB
C
114 lines
2.8 KiB
C
/* MiniDLNA media server
|
|
* Copyright (C) 2013-2017 NETGEAR
|
|
*
|
|
* This file is part of MiniDLNA.
|
|
*
|
|
* MiniDLNA is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* MiniDLNA is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with MiniDLNA. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
#ifndef __CLIENTS_H__
|
|
#define __CLIENTS_H__
|
|
#include <stdint.h>
|
|
#include <sys/time.h>
|
|
#include <netinet/in.h>
|
|
|
|
#define CLIENT_CACHE_SLOTS 25
|
|
|
|
/* Client capability/quirk flags */
|
|
#define FLAG_DLNA 0x00000001
|
|
#define FLAG_MIME_AVI_DIVX 0x00000002
|
|
#define FLAG_MIME_AVI_AVI 0x00000004
|
|
#define FLAG_MIME_FLAC_FLAC 0x00000008
|
|
#define FLAG_MIME_WAV_WAV 0x00000010
|
|
#define FLAG_RESIZE_THUMBS 0x00000020
|
|
#define FLAG_NO_RESIZE 0x00000040
|
|
#define FLAG_MS_PFS 0x00000080 /* Microsoft PlaysForSure client */
|
|
#define FLAG_SAMSUNG 0x00000100
|
|
#define FLAG_SAMSUNG_DCM10 0x00000200
|
|
#define FLAG_AUDIO_ONLY 0x00000400
|
|
#define FLAG_FORCE_SORT 0x00000800
|
|
#define FLAG_CAPTION_RES 0x00001000
|
|
#define FLAG_SKIP_DLNA_PN 0x00002000 /* during browsing */
|
|
#define FLAG_CONVERT_MS 0x00004000 /* convert ms to s */
|
|
/* Response-related flags */
|
|
#define FLAG_HAS_CAPTIONS 0x10000000
|
|
#define RESPONSE_TRUNCATED 0x80000000
|
|
#define RESPONSE_FLAGS 0xF0000000
|
|
|
|
enum match_types {
|
|
EMatchNone,
|
|
EUserAgent,
|
|
EXAVClientInfo,
|
|
EFriendlyName,
|
|
EModelName,
|
|
EFriendlyNameSSDP
|
|
};
|
|
|
|
enum client_types {
|
|
EXbox = 1,
|
|
EPS3,
|
|
EDenonReceiver,
|
|
EDirecTV,
|
|
EFreeBox,
|
|
ELGDevice,
|
|
ELGNetCastDevice,
|
|
ELifeTab,
|
|
EMarantzDMP,
|
|
EMediaRoom,
|
|
ENetgearEVA2000,
|
|
EPanasonic,
|
|
EPopcornHour,
|
|
ERokuSoundBridge,
|
|
ESamsungSeriesA,
|
|
ESamsungSeriesB,
|
|
ESamsungSeriesCDEBDP,
|
|
ESamsungSeriesQ,
|
|
ESamsungSeriesCDE,
|
|
ESamsungBDJ5500,
|
|
ESonyBDP,
|
|
ESonyBravia,
|
|
ESonyInternetTV,
|
|
EToshibaTV,
|
|
EHyundaiTV,
|
|
EAsusOPlay,
|
|
EBubbleUPnP,
|
|
ENetFrontLivingConnect,
|
|
EKodi,
|
|
EMovian,
|
|
EStandardDLNA150,
|
|
EStandardUPnP
|
|
};
|
|
|
|
struct client_type_s {
|
|
enum client_types type;
|
|
uint32_t flags;
|
|
const char *name;
|
|
const char *match;
|
|
enum match_types match_type;
|
|
};
|
|
|
|
struct client_cache_s {
|
|
struct in_addr addr;
|
|
unsigned char mac[6];
|
|
struct client_type_s *type;
|
|
time_t age;
|
|
int connections;
|
|
};
|
|
|
|
extern struct client_type_s client_types[];
|
|
extern struct client_cache_s clients[CLIENT_CACHE_SLOTS];
|
|
|
|
struct client_cache_s *SearchClientCache(struct in_addr addr, int quiet);
|
|
struct client_cache_s *AddClientCache(struct in_addr addr, int type);
|
|
|
|
#endif
|