From 755c81fd340aaa26bf308cba3f01af81239610a6 Mon Sep 17 00:00:00 2001 From: Justin Maggard Date: Wed, 4 Apr 2012 18:24:21 +0000 Subject: [PATCH] * Forcibly tweak the model number for Xbox360 clients, or they might ignore us. --- minidlna.c | 4 +++- options.c | 1 - options.h | 1 - upnphttp.c | 17 +++++++++++++---- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/minidlna.c b/minidlna.c index 4bb6a20..96ed006 100644 --- a/minidlna.c +++ b/minidlna.c @@ -158,7 +158,7 @@ sigterm(int sig) /*errno = save_errno;*/ } -/* record the startup time, for returning uptime */ +/* record the startup time */ static void set_startup_time(void) { @@ -263,6 +263,7 @@ getfriendlyname(char * buf, int len) } } fclose(info); +#if PNPX memcpy(pnpx_hwid+4, "01F2", 4); if( strcmp(modelnumber, "NVX") == 0 ) memcpy(pnpx_hwid+17, "0101", 4); @@ -285,6 +286,7 @@ getfriendlyname(char * buf, int len) memcpy(pnpx_hwid+17, "0108", 4); else if( strcmp(modelnumber, "NV+ v2") == 0 ) memcpy(pnpx_hwid+17, "0109", 4); +#endif #else char * logname; logname = getenv("LOGNAME"); diff --git a/options.c b/options.c index fa28f0b..894095d 100644 --- a/options.c +++ b/options.c @@ -47,7 +47,6 @@ static const struct { { UPNPPORT, "port" }, { UPNPPRESENTATIONURL, "presentation_url" }, { UPNPNOTIFY_INTERVAL, "notify_interval" }, - { UPNPSYSTEM_UPTIME, "system_uptime" }, { UPNPUUID, "uuid"}, { UPNPSERIAL, "serial"}, { UPNPMODEL_NAME, "model_name"}, diff --git a/options.h b/options.h index c5f0897..29f6cae 100644 --- a/options.h +++ b/options.h @@ -40,7 +40,6 @@ enum upnpconfigoptions { UPNPPORT, /* port */ UPNPPRESENTATIONURL, /* presentation_url */ UPNPNOTIFY_INTERVAL, /* notify_interval */ - UPNPSYSTEM_UPTIME, /* system_uptime */ UPNPUUID, /* uuid */ UPNPSERIAL, /* serial */ UPNPMODEL_NAME, /* model_name */ diff --git a/upnphttp.c b/upnphttp.c index 0d30f25..92ac172 100644 --- a/upnphttp.c +++ b/upnphttp.c @@ -926,12 +926,21 @@ ProcessHttpQuery_upnphttp(struct upnphttp * h) if(strcmp(ROOTDESC_PATH, HttpUrl) == 0) { /* If it's a Xbox360, we might need a special friendly_name to be recognized */ - if( (h->req_client == EXbox) && !strchr(friendly_name, ':') ) + if( h->req_client == EXbox ) { - i = strlen(friendly_name); - snprintf(friendly_name+i, FRIENDLYNAME_MAX_LEN-i, ": 1"); + char model_sav[2]; + i = 0; + memcpy(model_sav, modelnumber, 2); + strcpy(modelnumber, "1"); + if( !strchr(friendly_name, ':') ) + { + i = strlen(friendly_name); + snprintf(friendly_name+i, FRIENDLYNAME_MAX_LEN-i, ": 1"); + } sendXMLdesc(h, genRootDesc); - friendly_name[i] = '\0'; + if( i ) + friendly_name[i] = '\0'; + memcpy(modelnumber, model_sav, 2); } else if( h->reqflags & FLAG_SAMSUNG_TV ) {