* Properly skip sorting on UPnPSearches of very large containers on sparc-based ReadyNAS processors.
This commit is contained in:
parent
226cf8bb66
commit
a67c054ef7
2
LICENCE
2
LICENCE
@ -1,6 +1,6 @@
|
||||
MiniDLNA is distributed under version 2 of the General Public License (included
|
||||
in its entirety, below). Version 2 is the only version of this license which
|
||||
this version of BusyBox (or modified versions derived from this one) may be
|
||||
this version of MiniDLNA (or modified versions derived from this one) may be
|
||||
distributed under.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
20
genconfig.sh
20
genconfig.sh
@ -16,6 +16,8 @@ DB_PATH="/tmp/minidlna"
|
||||
# detecting the OS name and version
|
||||
OS_NAME=`uname -s`
|
||||
OS_VERSION=`uname -r`
|
||||
TIVO="/*#define TIVO_SUPPORT*/"
|
||||
READYNAS="/*#define READYNAS*/"
|
||||
|
||||
${RM} ${CONFIGFILE}
|
||||
|
||||
@ -34,7 +36,7 @@ ${RM} ${CONFIGFILE}
|
||||
! -e "/usr/include/ffmpeg/libavutil/avutil.h" ] && MISSING="libavutil $MISSING"
|
||||
[ ! -e "/usr/include/ffmpeg/avformat.h" -a \
|
||||
! -e "/usr/include/libavformat/avformat.h" -a \
|
||||
! -e "/usr/include/ffmpeg/libavformat/avformat.h" ] && MISSING="libformat $MISSING"
|
||||
! -e "/usr/include/ffmpeg/libavformat/avformat.h" ] && MISSING="libavformat $MISSING"
|
||||
[ ! -e "/usr/include/ffmpeg/avcodec.h" -a \
|
||||
! -e "/usr/include/libavcodec/avcodec.h" -a \
|
||||
! -e "/usr/include/ffmpeg/libavcodec/avcodec.h" ] && MISSING="libavcodec $MISSING"
|
||||
@ -100,8 +102,16 @@ case $OS_NAME in
|
||||
KERNVERC=`echo $OS_VERSION | awk -F. '{print $3}'`
|
||||
KERNVERD=`echo $OS_VERSION | awk -F. '{print $4}'`
|
||||
#echo "$KERNVERA.$KERNVERB.$KERNVERC.$KERNVERD"
|
||||
# NETGEAR ReadyNAS special case
|
||||
if [ -f /etc/raidiator_version ]; then
|
||||
OS_NAME=$(awk -F'!!|=' '{ print $1 }' /etc/raidiator_version)
|
||||
OS_VERSION=$(awk -F'!!|[=,]' '{ print $3 }' /etc/raidiator_version)
|
||||
OS_URL=http://www.readynas.com/
|
||||
DB_PATH="/var/cache/minidlna"
|
||||
TIVO="#define TIVO_SUPPORT"
|
||||
READYNAS="#define READYNAS"
|
||||
# Debian GNU/Linux special case
|
||||
if [ -f /etc/debian_version ]; then
|
||||
elif [ -f /etc/debian_version ]; then
|
||||
OS_NAME=Debian
|
||||
OS_VERSION=`cat /etc/debian_version`
|
||||
OS_URL=http://www.debian.org/
|
||||
@ -112,11 +122,9 @@ case $OS_NAME in
|
||||
OS_NAME=`${LSB_RELEASE} -i -s`
|
||||
OS_VERSION=`${LSB_RELEASE} -r -s`
|
||||
fi
|
||||
echo "#define USE_NETFILTER 1" >> ${CONFIGFILE}
|
||||
;;
|
||||
*)
|
||||
echo "Unknown OS : $OS_NAME"
|
||||
echo "Please contact the author at http://miniupnp.free.fr/"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
@ -144,7 +152,9 @@ fi
|
||||
echo "" >> ${CONFIGFILE}
|
||||
|
||||
echo "/* Enable NETGEAR ReadyNAS-specific tweaks. */" >> ${CONFIGFILE}
|
||||
echo "/*#define READYNAS*/" >> ${CONFIGFILE}
|
||||
echo "${READYNAS}" >> ${CONFIGFILE}
|
||||
echo "/* Compile in TiVo support. */" >> ${CONFIGFILE}
|
||||
echo "${TIVO}" >> ${CONFIGFILE}
|
||||
echo "" >> ${CONFIGFILE}
|
||||
|
||||
echo "#endif" >> ${CONFIGFILE}
|
||||
|
18
upnpsoap.c
18
upnpsoap.c
@ -639,11 +639,6 @@ BrowseContentDirectory(struct upnphttp * h, const char * action)
|
||||
|
||||
if( !RequestedCount )
|
||||
RequestedCount = -1;
|
||||
#ifdef __sparc__ /* Sorting takes too long on slow processors with very large containers */
|
||||
if( totalMatches < 10000 )
|
||||
#endif
|
||||
orderBy = parse_sort_criteria(SortCriteria);
|
||||
|
||||
|
||||
args.resp = resp;
|
||||
args.size = sprintf(resp, "%s", resp0);
|
||||
@ -699,6 +694,11 @@ BrowseContentDirectory(struct upnphttp * h, const char * action)
|
||||
totalMatches = atoi(result[1]);
|
||||
sqlite3_free_table(result);
|
||||
}
|
||||
#ifdef __sparc__ /* Sorting takes too long on slow processors with very large containers */
|
||||
if( totalMatches < 10000 )
|
||||
#endif
|
||||
orderBy = parse_sort_criteria(SortCriteria);
|
||||
|
||||
sql = sqlite3_mprintf( SELECT_COLUMNS
|
||||
"from OBJECTS o left join DETAILS d on (d.ID = o.DETAIL_ID)"
|
||||
" where PARENT_ID = '%s' %s limit %d, %d;",
|
||||
@ -767,10 +767,6 @@ SearchContentDirectory(struct upnphttp * h, const char * action)
|
||||
|
||||
if( !RequestedCount )
|
||||
RequestedCount = -1;
|
||||
#ifdef __sparc__ /* Sorting takes too long on slow processors with very large containers */
|
||||
if( totalMatches < 10000 )
|
||||
#endif
|
||||
orderBy = parse_sort_criteria(SortCriteria);
|
||||
|
||||
args.resp = resp;
|
||||
args.size = sprintf(resp, "%s", resp0);
|
||||
@ -872,6 +868,10 @@ SearchContentDirectory(struct upnphttp * h, const char * action)
|
||||
totalMatches = atoi(result[1]);
|
||||
sqlite3_free_table(result);
|
||||
}
|
||||
#ifdef __sparc__ /* Sorting takes too long on slow processors with very large containers */
|
||||
if( totalMatches < 10000 )
|
||||
#endif
|
||||
orderBy = parse_sort_criteria(SortCriteria);
|
||||
|
||||
sql = sqlite3_mprintf( SELECT_COLUMNS
|
||||
"from OBJECTS o left join DETAILS d on (d.ID = o.DETAIL_ID)"
|
||||
|
Loading…
x
Reference in New Issue
Block a user