- Fixed a bug in UpnpPrintf, function could call va_start() and return

befor calling va_end().

- Removed all uses of the DBGONLY(x) macro. A static inline empty
function now is used and the compiler takes care of optimizing it out.



git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@185 119443c7-1b9e-41f8-b6fc-b9c35fce742c
This commit is contained in:
Marcelo Roberto Jimenez 2007-05-18 13:31:21 +00:00
parent 4ceb6c67d1
commit 2c1dba2942
31 changed files with 2329 additions and 2378 deletions

View File

@ -1,6 +1,14 @@
************************************************************************* *******************************************************************************
Version 1.4.7 Version 1.4.7
************************************************************************* *******************************************************************************
2007-05-17 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
* Removed all uses of the DBGONLY(x) macro. A static inline empty
function now is used and the compiler takes care of optimizing it out.
2007-05-17 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
* Fixed a bug in UpnpPrintf, function could call va_start() and return
befor calling va_end().
2007-05-15 Marcelo Jimenez <mroberto(at)users.sourceforge.net> 2007-05-15 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
* EXPORT_SPEC missing on some declarations in ixml/inc/ixml.h. * EXPORT_SPEC missing on some declarations in ixml/inc/ixml.h.
@ -31,16 +39,16 @@ Version 1.4.7
tarball and executes upnp_tv_device from its creation directory, tarball and executes upnp_tv_device from its creation directory,
there will be no error -108 for not finding directory web. there will be no error -108 for not finding directory web.
************************************************************************* *******************************************************************************
Version 1.4.6 Version 1.4.6
************************************************************************* *******************************************************************************
2007-04-19 Marcelo Jimenez <mroberto(at)users.sourceforge.net> 2007-04-19 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
* Fix for freebsd host_os in configure.ac. * Fix for freebsd host_os in configure.ac.
************************************************************************* *******************************************************************************
Version 1.4.5 Version 1.4.5
************************************************************************* *******************************************************************************
2007-04-19 Marcelo Jimenez <mroberto(at)users.sourceforge.net> 2007-04-19 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
* Case insensitive comparison in raw_find_str() (httpparser.c) as * Case insensitive comparison in raw_find_str() (httpparser.c) as
@ -66,9 +74,9 @@ Version 1.4.5
(int instead of size_t) in combination with format "b" and "Q". (int instead of size_t) in combination with format "b" and "Q".
The attached patch should fix this. The attached patch should fix this.
************************************************************************* *******************************************************************************
Version 1.4.4 Version 1.4.4
************************************************************************* *******************************************************************************
2007-04-06 Marcelo Jimenez <mroberto(at)users.sourceforge.net> 2007-04-06 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
* SF Tracker [ 1695399 ] Typo in util.h * SF Tracker [ 1695399 ] Typo in util.h
@ -103,9 +111,9 @@ Version 1.4.4
Please note, that I enabled some extra debugging lines that were commented, Please note, that I enabled some extra debugging lines that were commented,
in order to get more information. See attached files. in order to get more information. See attached files.
************************************************************************* *******************************************************************************
Version 1.4.3 Version 1.4.3
************************************************************************* *******************************************************************************
2007-03-13 Marcelo Jimenez <mroberto(at)users.sourceforge.net> 2007-03-13 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
* SF Tracker [ 1663004 ] Compile on Cygwin * SF Tracker [ 1663004 ] Compile on Cygwin
@ -140,9 +148,9 @@ Version 1.4.3
* Fixed nasty segmentation fault bug on membuffer.c. * Fixed nasty segmentation fault bug on membuffer.c.
************************************************************************* *******************************************************************************
Version 1.4.2 Version 1.4.2
************************************************************************* *******************************************************************************
2007-02-09 Marcelo Jimenez <mroberto(at)users.sourceforge.net> 2007-02-09 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
@ -244,9 +252,9 @@ Version 1.4.2
* support for large files (>2 GBytes) added * support for large files (>2 GBytes) added
************************************************************************* *******************************************************************************
Version 1.4.1 Version 1.4.1
************************************************************************* *******************************************************************************
2006-07-07 Oxy <virtual_worlds(at)gmx.de> 2006-07-07 Oxy <virtual_worlds(at)gmx.de>
@ -277,9 +285,9 @@ Version 1.4.1
* Patch to fix memory leaks and reasons for crashes added (thanks * Patch to fix memory leaks and reasons for crashes added (thanks
to loigu) to loigu)
************************************************************************* *******************************************************************************
Version 1.4.0 Version 1.4.0
************************************************************************* *******************************************************************************
2006-05-26 Oxy <virtual_worlds(at)gmx.de> 2006-05-26 Oxy <virtual_worlds(at)gmx.de>
@ -305,9 +313,9 @@ Version 1.4.0
* Bugfix for M-Search packet * Bugfix for M-Search packet
************************************************************************* *******************************************************************************
FORK FROM DEAD libupnp FORK FROM DEAD libupnp
************************************************************************* *******************************************************************************
2006-04-29 Rémi Turboult <r3mi(at)users.sourceforge.net> 2006-04-29 Rémi Turboult <r3mi(at)users.sourceforge.net>

View File

@ -1,4 +1,4 @@
/* autoconfig.h. Generated by configure. */ /* autoconfig.h. Generated from autoconfig.h.in by configure. */
/* autoconfig.h.in. Generated from configure.ac by autoheader. */ /* autoconfig.h.in. Generated from configure.ac by autoheader. */
/* Define to 1 to compile debug code */ /* Define to 1 to compile debug code */
@ -19,15 +19,18 @@
/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
#define HAVE_FSEEKO 1 #define HAVE_FSEEKO 1
/* Define to 1 if you have the `ftime' function. */
#define HAVE_FTIME 1
/* Define to 1 if you have the <inttypes.h> header file. */ /* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1 #define HAVE_INTTYPES_H 1
/* Define to 1 if you have the `compat' library (-lcompat). */
/* #undef HAVE_LIBCOMPAT */
/* Define to 1 if you have the <limits.h> header file. */ /* Define to 1 if you have the <limits.h> header file. */
#define HAVE_LIMITS_H 1 #define HAVE_LIMITS_H 1
/* Define to 1 if you have the <malloc.h> header file. */
#define HAVE_MALLOC_H 1
/* Define to 1 if you have the <memory.h> header file. */ /* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1 #define HAVE_MEMORY_H 1
@ -92,19 +95,19 @@
#define PACKAGE "libupnp" #define PACKAGE "libupnp"
/* Define to the address where bug reports for this package should be sent. */ /* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT "virtual_worlds@gmx.de" #define PACKAGE_BUGREPORT "mroberto@users.sourceforge.net"
/* Define to the full name of this package. */ /* Define to the full name of this package. */
#define PACKAGE_NAME "libupnp" #define PACKAGE_NAME "libupnp"
/* Define to the full name and version of this package. */ /* Define to the full name and version of this package. */
#define PACKAGE_STRING "libupnp 1.4.0" #define PACKAGE_STRING "libupnp 1.4.7"
/* Define to the one symbol short name of this package. */ /* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "libupnp" #define PACKAGE_TARNAME "libupnp"
/* Define to the version of this package. */ /* Define to the version of this package. */
#define PACKAGE_VERSION "1.4.0" #define PACKAGE_VERSION "1.4.7"
/* Define to necessary symbol if this constant uses a non-standard name on /* Define to necessary symbol if this constant uses a non-standard name on
your system. */ your system. */
@ -135,27 +138,30 @@
#define UPNP_VERSION_MINOR 4 #define UPNP_VERSION_MINOR 4
/* see upnpconfig.h */ /* see upnpconfig.h */
#define UPNP_VERSION_PATCH 0 #define UPNP_VERSION_PATCH 7
/* see upnpconfig.h */ /* see upnpconfig.h */
#define UPNP_VERSION_STRING "1.4.0" #define UPNP_VERSION_STRING "1.4.7"
/* Version number of package */ /* Version number of package */
#define VERSION "1.4.0" #define VERSION "1.4.7"
/* Number of bits in a file offset, on hosts where this is settable. */ /* File Offset size */
#define _FILE_OFFSET_BITS 64 #define _FILE_OFFSET_BITS 64
/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
/* #undef _LARGEFILE_SOURCE */ /* #undef _LARGEFILE_SOURCE */
/* Define for large files, on AIX-style hosts. */ /* Large files support */
/* #undef _LARGE_FILES */ #define _LARGE_FILE_SOURCE
/* Define to empty if `const' does not conform to ANSI C. */ /* Define to empty if `const' does not conform to ANSI C. */
/* #undef const */ /* #undef const */
/* Define to `unsigned' if <sys/types.h> does not define. */ /* Define to `long int' if <sys/types.h> does not define. */
/* #undef off_t */
/* Define to `unsigned int' if <sys/types.h> does not define. */
/* #undef size_t */ /* #undef size_t */
/* Substitute for socklen_t */ /* Substitute for socklen_t */

View File

@ -34,7 +34,6 @@
#include "autoconfig.h" #include "autoconfig.h"
#define MAX_JOBS_TOTAL 10
/** @name Compile time configuration options /** @name Compile time configuration options
* The Linux SDK for UPnP Devices contains some compile-time parameters * The Linux SDK for UPnP Devices contains some compile-time parameters
@ -96,6 +95,17 @@
#define MAX_THREADS 12 #define MAX_THREADS 12
//@} //@}
/** @name MAX_JOBS_TOTAL
* The {\tt MAX_JOBS_TOTAL} constant determines the maximum number of jobs
* that can be queued. If this limit is reached further jobs will be thrown
* to avoid memory exhaustion. The default value 100.
* (Added by Axis.)
*/
//@{
#define MAX_JOBS_TOTAL 100
//@}
/** @name DEFAULT_SOAP_CONTENT_LENGTH /** @name DEFAULT_SOAP_CONTENT_LENGTH
* SOAP messages will read at most {\tt DEFAULT_SOAP_CONTENT_LENGTH} bytes. * SOAP messages will read at most {\tt DEFAULT_SOAP_CONTENT_LENGTH} bytes.
* This prevents devices that have a misbehaving web server to send * This prevents devices that have a misbehaving web server to send
@ -294,27 +304,6 @@
/** @name DBGONLY
The {\bf DBGONLY} macro allows code to be marked so that it
is only included in the DEBUG build and not the release. To
use this macro, put the code inside of the parentheses:
{\tt DBGONLY(int i;)}
This will cause a declaration of the integer {\tt i} only
in the debug build.
*/
//@{
#ifdef DEBUG
#define DBGONLY(x) x
#else
#define DBGONLY(x)
#endif
//@}
#undef EXCLUDE_WEB_SERVER #undef EXCLUDE_WEB_SERVER
#undef EXCLUDE_MINISERVER #undef EXCLUDE_MINISERVER
#ifdef INTERNAL_WEB_SERVER #ifdef INTERNAL_WEB_SERVER
@ -358,4 +347,3 @@
//@} //@}
#endif #endif

View File

@ -1,4 +1,4 @@
/* upnp/inc/upnpconfig.h. Generated by configure. */ /* upnp/inc/upnpconfig.h. Generated from upnpconfig.h.in by configure. */
// -*- C -*- // -*- C -*-
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
// //
@ -40,7 +40,7 @@
***************************************************************************/ ***************************************************************************/
/** The library version (string) e.g. "1.3.0" */ /** The library version (string) e.g. "1.3.0" */
#define UPNP_VERSION_STRING "1.4.0" #define UPNP_VERSION_STRING "1.4.7"
/** Major version of the library */ /** Major version of the library */
#define UPNP_VERSION_MAJOR 1 #define UPNP_VERSION_MAJOR 1
@ -49,7 +49,7 @@
#define UPNP_VERSION_MINOR 4 #define UPNP_VERSION_MINOR 4
/** Patch version of the library */ /** Patch version of the library */
#define UPNP_VERSION_PATCH 0 #define UPNP_VERSION_PATCH 7
/** The library version (numeric) e.g. 10300 means version 1.3.0 */ /** The library version (numeric) e.g. 10300 means version 1.3.0 */
#define UPNP_VERSION \ #define UPNP_VERSION \
@ -69,7 +69,7 @@
/** Defined to 1 if the library has been compiled with DEBUG enabled /** Defined to 1 if the library has been compiled with DEBUG enabled
* (i.e. configure --enable-debug) : <upnp/upnpdebug.h> file is available */ * (i.e. configure --enable-debug) : <upnp/upnpdebug.h> file is available */
#undef UPNP_HAVE_DEBUG /* #undef UPNP_HAVE_DEBUG */
/** Defined to 1 if the library has been compiled with client API enabled /** Defined to 1 if the library has been compiled with client API enabled

View File

@ -82,15 +82,6 @@ typedef enum priority {LOW_PRIORITY,
#define DEBUG 1 #define DEBUG 1
#endif #endif
//DEBUGGING
#ifndef WIN32
#ifdef DEBUG
#define DBGONLY(x) x
#else
#define DBGONLY(x)
#endif
#endif
#include "LinkedList.h" #include "LinkedList.h"
#include <sys/timeb.h> #include <sys/timeb.h>
#include "FreeList.h" #include "FreeList.h"

View File

@ -52,9 +52,6 @@
#endif #endif
#include "ixml.h" #include "ixml.h"
#include "upnpconfig.h" #include "upnpconfig.h"
#if UPNP_HAVE_DEBUG
#include "upnpdebug.h"
#endif
#ifdef WIN32 #ifdef WIN32
@ -489,6 +486,8 @@
#define INOUT #define INOUT
#endif #endif
#include "upnpdebug.h"
enum UpnpOpenFileMode{UPNP_READ, UPNP_WRITE}; enum UpnpOpenFileMode{UPNP_READ, UPNP_WRITE};
/// @name Constants, Structures, and Types /// @name Constants, Structures, and Types

View File

@ -33,11 +33,9 @@
#ifndef UPNP_DEBUG_H #ifndef UPNP_DEBUG_H
#define UPNP_DEBUG_H #define UPNP_DEBUG_H
#include "upnp.h"
#include "upnpconfig.h" #include "upnpconfig.h"
// Function declarations only if debug compiled into the library
#if UPNP_HAVE_DEBUG
#include <stdio.h> #include <stdio.h>
#ifdef __cplusplus #ifdef __cplusplus
@ -70,7 +68,17 @@ extern "C" {
* \end{itemize} * \end{itemize}
*/ */
typedef enum Upnp_Module {SSDP,SOAP,GENA,TPOOL,MSERV,DOM,API, HTTP} Dbg_Module; typedef enum Upnp_Module {
SSDP,
SOAP,
GENA,
TPOOL,
MSERV,
DOM,
API,
HTTP
} Dbg_Module;
//@{ //@{
typedef enum Upnp_LogLevel_e { typedef enum Upnp_LogLevel_e {
UPNP_CRITICAL, UPNP_CRITICAL,
@ -102,7 +110,11 @@ typedef enum Upnp_LogLevel_e {
* -1 : If fails * -1 : If fails
* UPNP_E_SUCCESS : if success * UPNP_E_SUCCESS : if success
***************************************************************************/ ***************************************************************************/
#ifdef DEBUG
int UpnpInitLog(); int UpnpInitLog();
#else
static inline int UpnpInitLog() { return UPNP_E_SUCCESS; }
#endif
// for backward compatibility // for backward compatibility
#define InitLog UpnpInitLog #define InitLog UpnpInitLog
@ -111,13 +123,17 @@ int UpnpInitLog();
/*************************************************************************** /***************************************************************************
* Function : UpnpSetLogLevel * Function : UpnpSetLogLevel
* *
* Parameters: void * Parameters: Upnp_LogLevel log_level
* *
* Description: * Description:
* This functions set the log level (see {\tt Upnp_LogLevel} * This functions set the log level (see {\tt Upnp_LogLevel}
* Returns: void * Returns: void
***************************************************************************/ ***************************************************************************/
void UpnpSetLogLevel (Upnp_LogLevel); #ifdef DEBUG
void UpnpSetLogLevel(Upnp_LogLevel log_level);
#else
static inline void UpnpSetLogLevel(Upnp_LogLevel log_level) {}
#endif
/*************************************************************************** /***************************************************************************
@ -129,7 +145,11 @@ void UpnpSetLogLevel (Upnp_LogLevel);
* This functions closes the log files * This functions closes the log files
* Returns: void * Returns: void
***************************************************************************/ ***************************************************************************/
#ifdef DEBUG
void UpnpCloseLog(); void UpnpCloseLog();
#else
static inline void UpnpCloseLog() {}
#endif
// for backward compatibility // for backward compatibility
#define CloseLog UpnpCloseLog #define CloseLog UpnpCloseLog
@ -149,7 +169,15 @@ void UpnpCloseLog();
* per the requested banner * per the requested banner
* Returns: void * Returns: void
***************************************************************************/ ***************************************************************************/
void UpnpSetLogFileNames (const char* ErrFileName, const char* InfoFileName); #ifdef DEBUG
void UpnpSetLogFileNames(
const char *ErrFileName,
const char *InfoFileName);
#else
static inline void UpnpSetLogFileNames(
const char *ErrFileName,
const char *InfoFileName) {}
#endif
// for backward compatibility // for backward compatibility
#define SetLogFileNames UpnpSetLogFileNames #define SetLogFileNames UpnpSetLogFileNames
@ -171,12 +199,45 @@ void UpnpSetLogFileNames (const char* ErrFileName, const char* InfoFileName);
* NULL : if the module is turn off for debug * NULL : if the module is turn off for debug
* else returns the right file descriptor * else returns the right file descriptor
***************************************************************************/ ***************************************************************************/
#ifdef DEBUG
FILE *UpnpGetDebugFile(Upnp_LogLevel level, Dbg_Module module); FILE *UpnpGetDebugFile(Upnp_LogLevel level, Dbg_Module module);
#else
static inline FILE *UpnpGetDebugFile(Upnp_LogLevel level, Dbg_Module module)
{
return NULL;
}
#endif
// for backward compatibility // for backward compatibility
#define GetDebugFile UpnpGetDebugFile #define GetDebugFile UpnpGetDebugFile
/***************************************************************************
* Function : DebugAtThisLevel
*
* Parameters:
* IN Dbg_Level DLevel: The level of the debug logging. It will decide
* whether debug statement will go to standard output,
* or any of the log files.
* IN Dbg_Module Module: debug will go in the name of this module
*
* Description:
* This functions returns true if debug output should be done in this
* module.
*
* Returns: int
***************************************************************************/
#ifdef DEBUG
int DebugAtThisLevel(
IN Upnp_LogLevel DLevel,
IN Dbg_Module Module);
#else
static inline int DebugAtThisLevel(
IN Upnp_LogLevel DLevel,
IN Dbg_Module Module) { return 0; }
#endif
/*************************************************************************** /***************************************************************************
* Function : UpnpPrintf * Function : UpnpPrintf
* *
@ -198,6 +259,7 @@ FILE* UpnpGetDebugFile (Upnp_LogLevel level, Dbg_Module module);
* debug statement is coming * debug statement is coming
* Returns: void * Returns: void
***************************************************************************/ ***************************************************************************/
#ifdef DEBUG
void UpnpPrintf (Upnp_LogLevel DLevel, Dbg_Module Module, void UpnpPrintf (Upnp_LogLevel DLevel, Dbg_Module Module,
const char* DbgFileName, int DbgLineNo, const char* DbgFileName, int DbgLineNo,
const char* FmtStr, const char* FmtStr,
@ -206,6 +268,15 @@ void UpnpPrintf (Upnp_LogLevel DLevel, Dbg_Module Module,
__attribute__((format (__printf__, 5, 6))) __attribute__((format (__printf__, 5, 6)))
#endif #endif
; ;
#else
static inline void UpnpPrintf(
Upnp_LogLevel DLevel,
Dbg_Module Module,
const char* DbgFileName,
int DbgLineNo,
const char* FmtStr,
...) {}
#endif
/*************************************************************************** /***************************************************************************
@ -222,8 +293,19 @@ void UpnpPrintf (Upnp_LogLevel DLevel, Dbg_Module Module,
* per the requested banner * per the requested banner
* Returns: void * Returns: void
***************************************************************************/ ***************************************************************************/
void UpnpDisplayBanner (FILE *fd, #ifdef DEBUG
const char** lines, size_t size, int starlength); void UpnpDisplayBanner(
FILE *fd,
const char **lines,
size_t size,
int starlength);
#else
static inline void UpnpDisplayBanner(
FILE *fd,
const char **lines,
size_t size,
int starlength) {}
#endif
/*************************************************************************** /***************************************************************************
@ -240,19 +322,23 @@ void UpnpDisplayBanner (FILE *fd,
* debug statement is coming to the log file * debug statement is coming to the log file
* Returns: void * Returns: void
***************************************************************************/ ***************************************************************************/
void UpnpDisplayFileAndLine (FILE *fd, const char *DbgFileName, int DbgLineNo); #ifdef DEBUG
void UpnpDisplayFileAndLine(
FILE *fd,
const char *DbgFileName,
int DbgLineNo);
#else
static inline void UpnpDisplayFileAndLine(
FILE *fd,
const char *DbgFileName,
int DbgLineNo) {}
#endif
//@} //@}
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif // UPNP_HAVE_DEBUG
#endif // UPNP_DEBUG_H #endif // UPNP_DEBUG_H

View File

@ -200,12 +200,11 @@ int UpnpInit( IN const char *HostIP,
srand( time( NULL ) ); // needed by SSDP or other parts srand( time( NULL ) ); // needed by SSDP or other parts
DBGONLY( if( InitLog( ) != UPNP_E_SUCCESS ) if( UpnpInitLog() != UPNP_E_SUCCESS ) {
return UPNP_E_INIT_FAILED; ); return UPNP_E_INIT_FAILED;
}
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, "Inside UpnpInit \n" );
( UPNP_INFO, API, __FILE__, __LINE__, "Inside UpnpInit \n" );
)
// initialize mutex // initialize mutex
#ifdef __CYGWIN__ #ifdef __CYGWIN__
/* On Cygwin, pthread_mutex_init() fails without this memset. */ /* On Cygwin, pthread_mutex_init() fails without this memset. */
@ -281,9 +280,8 @@ int UpnpInit( IN const char *HostIP,
} }
#if EXCLUDE_MINISERVER == 0 #if EXCLUDE_MINISERVER == 0
if( ( retVal = StartMiniServer( DestPort ) ) <= 0 ) { if( ( retVal = StartMiniServer( DestPort ) ) <= 0 ) {
DBGONLY( UpnpPrintf( UPNP_CRITICAL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_CRITICAL, API, __FILE__, __LINE__,
"Miniserver failed to start" ); "Miniserver failed to start" );
)
UpnpFinish(); UpnpFinish();
UpnpSdkInit = 0; UpnpSdkInit = 0;
if( retVal != -1 ) if( retVal != -1 )
@ -304,19 +302,17 @@ int UpnpInit( IN const char *HostIP,
} }
#endif #endif
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"Host Ip: %s Host Port: %d\n", LOCAL_HOST, "Host Ip: %s Host Port: %d\n", LOCAL_HOST,
LOCAL_PORT ) ); LOCAL_PORT );
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, "Exiting UpnpInit \n" );
( UPNP_INFO, API, __FILE__, __LINE__, "Exiting UpnpInit \n" );
)
return UPNP_E_SUCCESS; return UPNP_E_SUCCESS;
} /***************** end of UpnpInit ******************/ } /***************** end of UpnpInit ******************/
DBGONLY( #ifdef DEBUG
static void static void
PrintThreadPoolStats (const char* DbgFileName, int DbgLineNo, PrintThreadPoolStats (const char* DbgFileName, int DbgLineNo,
const char* msg, const ThreadPoolStats* const stats) const char* msg, const ThreadPoolStats* const stats)
@ -337,7 +333,8 @@ PrintThreadPoolStats (const char* DbgFileName, int DbgLineNo,
stats->avgWaitHQ, stats->avgWaitMQ, stats->avgWaitLQ, stats->avgWaitHQ, stats->avgWaitMQ, stats->avgWaitLQ,
stats->maxThreads, stats->totalWorkTime, stats->maxThreads, stats->totalWorkTime,
stats->totalIdleTime ); stats->totalIdleTime );
}) }
#endif
/**************************************************************************** /****************************************************************************
@ -366,8 +363,9 @@ UpnpFinish( )
) )
struct Handle_Info *temp; struct Handle_Info *temp;
DBGONLY( ThreadPoolStats stats; #ifdef DEBUG
) ThreadPoolStats stats;
#endif
#ifdef WIN32 #ifdef WIN32
// WSACleanup( ); // WSACleanup( );
@ -376,18 +374,21 @@ UpnpFinish( )
if( UpnpSdkInit != 1 ) if( UpnpSdkInit != 1 )
return UPNP_E_FINISH; return UPNP_E_FINISH;
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"Inside UpnpFinish : UpnpSdkInit is :%d:\n",
UpnpSdkInit ); if( UpnpSdkInit == 1 ) {
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"UpnpFinish : UpnpSdkInit is ONE\n" );} "Inside UpnpFinish : UpnpSdkInit is :%d:\n",
UpnpSdkInit );
#ifdef DEBUG
if( UpnpSdkInit == 1 ) {
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"UpnpFinish : UpnpSdkInit is ONE\n" );
}
ThreadPoolGetStats( &gRecvThreadPool, &stats ); ThreadPoolGetStats( &gRecvThreadPool, &stats );
PrintThreadPoolStats (__FILE__, __LINE__, PrintThreadPoolStats (__FILE__, __LINE__,
"Recv Thread Pool", &stats); "Recv Thread Pool", &stats);
ThreadPoolGetStats( &gSendThreadPool, &stats ); ThreadPoolGetStats( &gSendThreadPool, &stats );
PrintThreadPoolStats (__FILE__, __LINE__, PrintThreadPoolStats (__FILE__, __LINE__,
"Send Thread Pool", &stats); "Send Thread Pool", &stats);
) #endif
#ifdef INCLUDE_DEVICE_APIS #ifdef INCLUDE_DEVICE_APIS
if( GetDeviceHandleInfo( &device_handle, &temp ) == HND_DEVICE ) if( GetDeviceHandleInfo( &device_handle, &temp ) == HND_DEVICE )
UpnpUnRegisterRootDevice( device_handle ); UpnpUnRegisterRootDevice( device_handle );
@ -406,12 +407,20 @@ UpnpFinish( )
web_server_destroy(); web_server_destroy();
#endif #endif
#ifdef DEBUG
ThreadPoolShutdown( &gSendThreadPool ); ThreadPoolShutdown( &gSendThreadPool );
ThreadPoolShutdown( &gRecvThreadPool ); ThreadPoolShutdown( &gRecvThreadPool );
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, "Exiting UpnpFinish : UpnpSdkInit is :%d:\n", UpnpSdkInit ); ThreadPoolGetStats( &gRecvThreadPool, &stats ); PrintThreadPoolStats ( __FILE__, __LINE__, "Recv Thread Pool", &stats); ThreadPoolGetStats( &gSendThreadPool, &stats ); PrintThreadPoolStats (__FILE__, __LINE__, "Send Thread Pool", &stats); ) // DBGONLY "Exiting UpnpFinish : UpnpSdkInit is :%d:\n",
DBGONLY( CloseLog( ); UpnpSdkInit );
); ThreadPoolGetStats( &gRecvThreadPool, &stats );
PrintThreadPoolStats( __FILE__, __LINE__,
"Recv Thread Pool", &stats);
ThreadPoolGetStats( &gSendThreadPool, &stats );
PrintThreadPoolStats(__FILE__, __LINE__,
"Send Thread Pool", &stats);
CloseLog();
#endif
CLIENTONLY( ithread_mutex_destroy( &GlobalClientSubscribeMutex ); CLIENTONLY( ithread_mutex_destroy( &GlobalClientSubscribeMutex );
) )
@ -522,16 +531,14 @@ UpnpAddRootDevice( IN const char *DescURL,
if( addServiceTable if( addServiceTable
( ( IXML_Node * ) temp, &HInfo->ServiceTable, DescURL ) ) { ( ( IXML_Node * ) temp, &HInfo->ServiceTable, DescURL ) ) {
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"UpnpAddRootDevice: GENA Service Table \n" ); "UpnpAddRootDevice: GENA Service Table \n" );
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"Here are the known services: \n" ); "Here are the known services: \n" );
printServiceTable( &HInfo->ServiceTable, UPNP_INFO, API ); printServiceTable( &HInfo->ServiceTable, UPNP_INFO, API );
)
} else { } else {
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"\nUpnpAddRootDevice: No Eventing Support Found \n" ); "\nUpnpAddRootDevice: No Eventing Support Found \n" );
)
} }
ixmlDocument_free( temp ); ixmlDocument_free( temp );
@ -579,9 +586,8 @@ UpnpRegisterRootDevice( IN const char *DescUrl,
return UPNP_E_FINISH; return UPNP_E_FINISH;
} }
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"Inside UpnpRegisterRootDevice \n" ); "Inside UpnpRegisterRootDevice \n" );
)
HandleLock(); HandleLock();
if( UpnpSdkDeviceRegistered ) { if( UpnpSdkDeviceRegistered ) {
@ -607,9 +613,8 @@ UpnpRegisterRootDevice( IN const char *DescUrl,
} }
HandleTable[*Hnd] = HInfo; HandleTable[*Hnd] = HInfo;
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"Root device URL is %s\n", DescUrl ); "Root device URL is %s\n", DescUrl );
)
HInfo->aliasInstalled = 0; HInfo->aliasInstalled = 0;
HInfo->HType = HND_DEVICE; HInfo->HType = HND_DEVICE;
@ -636,12 +641,11 @@ UpnpRegisterRootDevice( IN const char *DescUrl,
return retVal; return retVal;
} }
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"UpnpRegisterRootDevice: Valid Description\n" ); "UpnpRegisterRootDevice: Valid Description\n" );
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"UpnpRegisterRootDevice: DescURL : %s\n", "UpnpRegisterRootDevice: DescURL : %s\n",
HInfo->DescURL ); HInfo->DescURL );
)
HInfo->DeviceList = HInfo->DeviceList =
ixmlDocument_getElementsByTagName( HInfo->DescDocument, "device" ); ixmlDocument_getElementsByTagName( HInfo->DescDocument, "device" );
@ -650,9 +654,8 @@ UpnpRegisterRootDevice( IN const char *DescUrl,
ixmlDocument_free( HInfo->DescDocument ); ixmlDocument_free( HInfo->DescDocument );
FreeHandle( *Hnd ); FreeHandle( *Hnd );
HandleUnlock(); HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_CRITICAL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_CRITICAL, API, __FILE__, __LINE__,
"UpnpRegisterRootDevice: No devices found for RootDevice\n" ); "UpnpRegisterRootDevice: No devices found for RootDevice\n" );
)
return UPNP_E_INVALID_DESC; return UPNP_E_INVALID_DESC;
} }
@ -665,42 +668,37 @@ UpnpRegisterRootDevice( IN const char *DescUrl,
ixmlDocument_free( HInfo->DescDocument ); ixmlDocument_free( HInfo->DescDocument );
FreeHandle( *Hnd ); FreeHandle( *Hnd );
HandleUnlock(); HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_CRITICAL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_CRITICAL, API, __FILE__, __LINE__,
"UpnpRegisterRootDevice: No services found for RootDevice\n" ); "UpnpRegisterRootDevice: No services found for RootDevice\n" );
)
return UPNP_E_INVALID_DESC; return UPNP_E_INVALID_DESC;
} }
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"UpnpRegisterRootDevice: Gena Check\n" ); "UpnpRegisterRootDevice: Gena Check\n" );
)
//******************************* //*******************************
// GENA SET UP // GENA SET UP
//******************************* //*******************************
if( getServiceTable( ( IXML_Node * ) HInfo->DescDocument, if( getServiceTable( ( IXML_Node * ) HInfo->DescDocument,
&HInfo->ServiceTable, HInfo->DescURL ) ) { &HInfo->ServiceTable, HInfo->DescURL ) ) {
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"UpnpRegisterRootDevice: GENA Service Table \n" ); "UpnpRegisterRootDevice: GENA Service Table \n" );
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"Here are the known services: \n" ); "Here are the known services: \n" );
printServiceTable( &HInfo->ServiceTable, UPNP_INFO, API ); printServiceTable( &HInfo->ServiceTable, UPNP_INFO, API );
)
} else { } else {
CLIENTONLY( ListDestroy( &HInfo->SsdpSearchList, 0 ) ); CLIENTONLY( ListDestroy( &HInfo->SsdpSearchList, 0 ) );
FreeHandle( *Hnd ); FreeHandle( *Hnd );
HandleUnlock(); HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"\nUpnpRegisterRootDevice: Errors retrieving service table \n" ); "\nUpnpRegisterRootDevice: Errors retrieving service table \n" );
)
return UPNP_E_INVALID_DESC; return UPNP_E_INVALID_DESC;
} }
UpnpSdkDeviceRegistered = 1; UpnpSdkDeviceRegistered = 1;
HandleUnlock(); HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"Exiting RegisterRootDevice Successfully\n" ); "Exiting RegisterRootDevice Successfully\n" );
)
return UPNP_E_SUCCESS; return UPNP_E_SUCCESS;
@ -753,19 +751,17 @@ UpnpRemoveRootDevice( IN const char *DescURL,
if( removeServiceTable( ( IXML_Node * ) temp, &HInfo->ServiceTable ) ) { if( removeServiceTable( ( IXML_Node * ) temp, &HInfo->ServiceTable ) ) {
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"UpnpRemoveRootDevice: GENA Service Table \n" ); "UpnpRemoveRootDevice: GENA Service Table \n" );
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"Here are the known services: \n" ); "Here are the known services: \n" );
printServiceTable( &HInfo->ServiceTable, UPNP_INFO, API ); printServiceTable( &HInfo->ServiceTable, UPNP_INFO, API );
)
} else { } else {
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"\nUpnpRemoveRootDevice: No Services Removed\n" ); "\nUpnpRemoveRootDevice: No Services Removed\n" );
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"Here are the known services: \n" ); "Here are the known services: \n" );
printServiceTable( &HInfo->ServiceTable, UPNP_INFO, API ); printServiceTable( &HInfo->ServiceTable, UPNP_INFO, API );
)
} }
HandleUnlock(); HandleUnlock();
@ -813,9 +809,8 @@ UpnpUnRegisterRootDevice( IN UpnpDevice_Handle Hnd )
} }
HandleUnlock(); HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"Inside UpnpUnRegisterRootDevice \n" ); "Inside UpnpUnRegisterRootDevice \n" );
)
#if EXCLUDE_GENA == 0 #if EXCLUDE_GENA == 0
if( genaUnregisterDevice( Hnd ) != UPNP_E_SUCCESS ) if( genaUnregisterDevice( Hnd ) != UPNP_E_SUCCESS )
return UPNP_E_INVALID_HANDLE; return UPNP_E_INVALID_HANDLE;
@ -856,9 +851,8 @@ UpnpUnRegisterRootDevice( IN UpnpDevice_Handle Hnd )
UpnpSdkDeviceRegistered = 0; UpnpSdkDeviceRegistered = 0;
HandleUnlock(); HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"Exiting UpnpUnRegisterRootDevice \n" ); "Exiting UpnpUnRegisterRootDevice \n" );
)
return retVal; return retVal;
@ -1167,9 +1161,8 @@ UpnpRegisterRootDevice2( IN Upnp_DescType descriptionType,
return UPNP_E_FINISH; return UPNP_E_FINISH;
} }
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"Inside UpnpRegisterRootDevice2 \n" ); "Inside UpnpRegisterRootDevice2 \n" );
)
if( Hnd == NULL || Fun == NULL ) { if( Hnd == NULL || Fun == NULL ) {
return UPNP_E_INVALID_PARAM; return UPNP_E_INVALID_PARAM;
@ -1223,12 +1216,11 @@ UpnpRegisterRootDevice2( IN Upnp_DescType descriptionType,
HInfo->MaxSubscriptions = UPNP_INFINITE; HInfo->MaxSubscriptions = UPNP_INFINITE;
HInfo->MaxSubscriptionTimeOut = UPNP_INFINITE; HInfo->MaxSubscriptionTimeOut = UPNP_INFINITE;
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"UpnpRegisterRootDevice2: Valid Description\n" ); "UpnpRegisterRootDevice2: Valid Description\n" );
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"UpnpRegisterRootDevice2: DescURL : %s\n", "UpnpRegisterRootDevice2: DescURL : %s\n",
HInfo->DescURL ); HInfo->DescURL );
)
HInfo->DeviceList = HInfo->DeviceList =
ixmlDocument_getElementsByTagName( HInfo->DescDocument, "device" ); ixmlDocument_getElementsByTagName( HInfo->DescDocument, "device" );
@ -1238,9 +1230,8 @@ UpnpRegisterRootDevice2( IN Upnp_DescType descriptionType,
ixmlDocument_free( HInfo->DescDocument ); ixmlDocument_free( HInfo->DescDocument );
FreeHandle( *Hnd ); FreeHandle( *Hnd );
HandleUnlock(); HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"UpnpRegisterRootDevice2: No devices found for RootDevice\n" ); "UpnpRegisterRootDevice2: No devices found for RootDevice\n" );
)
return UPNP_E_INVALID_DESC; return UPNP_E_INVALID_DESC;
} }
@ -1254,37 +1245,32 @@ UpnpRegisterRootDevice2( IN Upnp_DescType descriptionType,
ixmlDocument_free( HInfo->DescDocument ); ixmlDocument_free( HInfo->DescDocument );
FreeHandle( *Hnd ); FreeHandle( *Hnd );
HandleUnlock(); HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"UpnpRegisterRootDevice2: No services found for RootDevice\n" ); "UpnpRegisterRootDevice2: No services found for RootDevice\n" );
)
return UPNP_E_INVALID_DESC; return UPNP_E_INVALID_DESC;
} }
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"UpnpRegisterRootDevice2: Gena Check\n" ); "UpnpRegisterRootDevice2: Gena Check\n" );
)
//******************************* //*******************************
//GENA SET UP //GENA SET UP
//******************************* //*******************************
if( getServiceTable( ( IXML_Node * ) HInfo->DescDocument, if( getServiceTable( ( IXML_Node * ) HInfo->DescDocument,
&HInfo->ServiceTable, HInfo->DescURL ) ) { &HInfo->ServiceTable, HInfo->DescURL ) ) {
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"UpnpRegisterRootDevice2: GENA Service Table \n" ); "UpnpRegisterRootDevice2: GENA Service Table \n" );
)
} else { } else {
CLIENTONLY( ListDestroy( &HInfo->SsdpSearchList, 0 ) ); CLIENTONLY( ListDestroy( &HInfo->SsdpSearchList, 0 ) );
FreeHandle( *Hnd ); FreeHandle( *Hnd );
HandleUnlock(); HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"\nUpnpRegisterRootDevice: Errors retrieving service table \n" ); "\nUpnpRegisterRootDevice: Errors retrieving service table \n" );
)
return UPNP_E_INVALID_DESC; return UPNP_E_INVALID_DESC;
} }
UpnpSdkDeviceRegistered = 1; UpnpSdkDeviceRegistered = 1;
HandleUnlock(); HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting RegisterRootDevice2 Successfully\n" ); "Exiting RegisterRootDevice2 Successfully\n" );
)
return UPNP_E_SUCCESS; return UPNP_E_SUCCESS;
} /****************** End of UpnpRegisterRootDevice2 *********************/ } /****************** End of UpnpRegisterRootDevice2 *********************/
@ -1323,9 +1309,8 @@ UpnpRegisterClient( IN Upnp_FunPtr Fun,
return UPNP_E_FINISH; return UPNP_E_FINISH;
} }
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpRegisterClient \n" ); "Inside UpnpRegisterClient \n" );
)
if( Fun == NULL || Hnd == NULL ) { if( Fun == NULL || Hnd == NULL ) {
return UPNP_E_INVALID_PARAM; return UPNP_E_INVALID_PARAM;
@ -1366,9 +1351,8 @@ UpnpRegisterClient( IN Upnp_FunPtr Fun,
HandleUnlock(); HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpRegisterClient \n" ); "Exiting UpnpRegisterClient \n" );
)
return UPNP_E_SUCCESS; return UPNP_E_SUCCESS;
@ -1403,9 +1387,8 @@ UpnpUnRegisterClient( IN UpnpClient_Handle Hnd )
return UPNP_E_FINISH; return UPNP_E_FINISH;
} }
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpUnRegisterClient \n" ); "Inside UpnpUnRegisterClient \n" );
)
HandleLock(); HandleLock();
if( !UpnpSdkClientRegistered ) { if( !UpnpSdkClientRegistered ) {
HandleUnlock(); HandleUnlock();
@ -1438,9 +1421,8 @@ UpnpUnRegisterClient( IN UpnpClient_Handle Hnd )
FreeHandle( Hnd ); FreeHandle( Hnd );
UpnpSdkClientRegistered = 0; UpnpSdkClientRegistered = 0;
HandleUnlock(); HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpUnRegisterClient \n" ); "Exiting UpnpUnRegisterClient \n" );
)
return UPNP_E_SUCCESS; return UPNP_E_SUCCESS;
} /****************** End of UpnpUnRegisterClient *********************/ } /****************** End of UpnpUnRegisterClient *********************/
@ -1483,9 +1465,8 @@ UpnpSendAdvertisement( IN UpnpDevice_Handle Hnd,
return UPNP_E_FINISH; return UPNP_E_FINISH;
} }
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpSendAdvertisement \n" ); "Inside UpnpSendAdvertisement \n" );
)
HandleLock(); HandleLock();
if( GetHandleInfo( Hnd, &SInfo ) != HND_DEVICE ) { if( GetHandleInfo( Hnd, &SInfo ) != HND_DEVICE ) {
@ -1554,8 +1535,8 @@ UpnpSendAdvertisement( IN UpnpDevice_Handle Hnd,
#endif #endif
HandleUnlock(); HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpSendAdvertisement \n" ); ) "Exiting UpnpSendAdvertisement \n" );
return retVal; return retVal;
@ -1595,9 +1576,8 @@ UpnpSearchAsync( IN UpnpClient_Handle Hnd,
return UPNP_E_FINISH; return UPNP_E_FINISH;
} }
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpSearchAsync \n" ); "Inside UpnpSearchAsync \n" );
)
HandleLock(); HandleLock();
if( GetHandleInfo( Hnd, &SInfo ) != HND_CLIENT ) { if( GetHandleInfo( Hnd, &SInfo ) != HND_CLIENT ) {
@ -1617,9 +1597,8 @@ UpnpSearchAsync( IN UpnpClient_Handle Hnd,
//HandleUnlock(); //HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpSearchAsync \n" ); "Exiting UpnpSearchAsync \n" );
)
return UPNP_E_SUCCESS; return UPNP_E_SUCCESS;
@ -1659,9 +1638,8 @@ UpnpSetMaxSubscriptions( IN UpnpDevice_Handle Hnd,
return UPNP_E_FINISH; return UPNP_E_FINISH;
} }
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpSetMaxSubscriptions \n" ); "Inside UpnpSetMaxSubscriptions \n" );
)
HandleLock(); HandleLock();
if( ( ( MaxSubscriptions != UPNP_INFINITE ) if( ( ( MaxSubscriptions != UPNP_INFINITE )
@ -1673,9 +1651,8 @@ UpnpSetMaxSubscriptions( IN UpnpDevice_Handle Hnd,
SInfo->MaxSubscriptions = MaxSubscriptions; SInfo->MaxSubscriptions = MaxSubscriptions;
HandleUnlock(); HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpSetMaxSubscriptions \n" ); "Exiting UpnpSetMaxSubscriptions \n" );
)
return UPNP_E_SUCCESS; return UPNP_E_SUCCESS;
@ -1710,9 +1687,8 @@ UpnpSetMaxSubscriptionTimeOut( IN UpnpDevice_Handle Hnd,
return UPNP_E_FINISH; return UPNP_E_FINISH;
} }
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpSetMaxSubscriptionTimeOut \n" ); "Inside UpnpSetMaxSubscriptionTimeOut \n" );
)
HandleLock(); HandleLock();
@ -1726,9 +1702,8 @@ UpnpSetMaxSubscriptionTimeOut( IN UpnpDevice_Handle Hnd,
SInfo->MaxSubscriptionTimeOut = MaxSubscriptionTimeOut; SInfo->MaxSubscriptionTimeOut = MaxSubscriptionTimeOut;
HandleUnlock(); HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpSetMaxSubscriptionTimeOut \n" ); "Exiting UpnpSetMaxSubscriptionTimeOut \n" );
)
return UPNP_E_SUCCESS; return UPNP_E_SUCCESS;
@ -1777,9 +1752,8 @@ UpnpSubscribeAsync( IN UpnpClient_Handle Hnd,
return UPNP_E_FINISH; return UPNP_E_FINISH;
} }
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpSubscribeAsync \n" ); "Inside UpnpSubscribeAsync \n" );
)
HandleLock(); HandleLock();
if( GetHandleInfo( Hnd, &SInfo ) != HND_CLIENT ) { if( GetHandleInfo( Hnd, &SInfo ) != HND_CLIENT ) {
@ -1820,9 +1794,8 @@ UpnpSubscribeAsync( IN UpnpClient_Handle Hnd,
TPJobSetPriority( &job, MED_PRIORITY ); TPJobSetPriority( &job, MED_PRIORITY );
ThreadPoolAdd( &gSendThreadPool, &job, NULL ); ThreadPoolAdd( &gSendThreadPool, &job, NULL );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpSubscribeAsync \n" ); "Exiting UpnpSubscribeAsync \n" );
)
return UPNP_E_SUCCESS; return UPNP_E_SUCCESS;
@ -1864,9 +1837,8 @@ UpnpSubscribe( IN UpnpClient_Handle Hnd,
return UPNP_E_FINISH; return UPNP_E_FINISH;
} }
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpSubscribe \n" ); "Inside UpnpSubscribe \n" );
)
HandleLock(); HandleLock();
if( GetHandleInfo( Hnd, &SInfo ) != HND_CLIENT ) { if( GetHandleInfo( Hnd, &SInfo ) != HND_CLIENT ) {
@ -1888,9 +1860,8 @@ UpnpSubscribe( IN UpnpClient_Handle Hnd,
HandleUnlock(); HandleUnlock();
RetVal = genaSubscribe( Hnd, EvtUrl, TimeOut, SubsId ); RetVal = genaSubscribe( Hnd, EvtUrl, TimeOut, SubsId );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpSubscribe \n" ); "Exiting UpnpSubscribe \n" );
)
return RetVal; return RetVal;
@ -1926,9 +1897,8 @@ UpnpUnSubscribe( IN UpnpClient_Handle Hnd,
return UPNP_E_FINISH; return UPNP_E_FINISH;
} }
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpUnSubscribe \n" ); "Inside UpnpUnSubscribe \n" );
)
HandleLock(); HandleLock();
if( GetHandleInfo( Hnd, &SInfo ) != HND_CLIENT ) { if( GetHandleInfo( Hnd, &SInfo ) != HND_CLIENT ) {
@ -1942,9 +1912,8 @@ UpnpUnSubscribe( IN UpnpClient_Handle Hnd,
HandleUnlock(); HandleUnlock();
RetVal = genaUnSubscribe( Hnd, SubsId ); RetVal = genaUnSubscribe( Hnd, SubsId );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpUnSubscribe \n" ); "Exiting UpnpUnSubscribe \n" );
)
return RetVal; return RetVal;
@ -1987,9 +1956,8 @@ UpnpUnSubscribeAsync( IN UpnpClient_Handle Hnd,
return UPNP_E_FINISH; return UPNP_E_FINISH;
} }
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpUnSubscribeAsync \n" ); "Inside UpnpUnSubscribeAsync \n" );
)
HandleLock(); HandleLock();
if( GetHandleInfo( Hnd, &SInfo ) != HND_CLIENT ) { if( GetHandleInfo( Hnd, &SInfo ) != HND_CLIENT ) {
@ -2022,9 +1990,8 @@ UpnpUnSubscribeAsync( IN UpnpClient_Handle Hnd,
TPJobSetPriority( &job, MED_PRIORITY ); TPJobSetPriority( &job, MED_PRIORITY );
ThreadPoolAdd( &gSendThreadPool, &job, NULL ); ThreadPoolAdd( &gSendThreadPool, &job, NULL );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpUnSubscribeAsync \n" ); "Exiting UpnpUnSubscribeAsync \n" );
)
return UPNP_E_SUCCESS; return UPNP_E_SUCCESS;
@ -2063,9 +2030,8 @@ UpnpRenewSubscription( IN UpnpClient_Handle Hnd,
return UPNP_E_FINISH; return UPNP_E_FINISH;
} }
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpRenewSubscription \n" ); "Inside UpnpRenewSubscription \n" );
)
HandleLock(); HandleLock();
if( GetHandleInfo( Hnd, &SInfo ) != HND_CLIENT ) { if( GetHandleInfo( Hnd, &SInfo ) != HND_CLIENT ) {
@ -2083,9 +2049,8 @@ UpnpRenewSubscription( IN UpnpClient_Handle Hnd,
HandleUnlock(); HandleUnlock();
RetVal = genaRenewSubscription( Hnd, SubsId, TimeOut ); RetVal = genaRenewSubscription( Hnd, SubsId, TimeOut );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpRenewSubscription \n" ); "Exiting UpnpRenewSubscription \n" );
)
return RetVal; return RetVal;
@ -2131,9 +2096,8 @@ UpnpRenewSubscriptionAsync( IN UpnpClient_Handle Hnd,
return UPNP_E_FINISH; return UPNP_E_FINISH;
} }
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpRenewSubscriptionAsync \n" ); "Inside UpnpRenewSubscriptionAsync \n" );
)
HandleLock(); HandleLock();
if( GetHandleInfo( Hnd, &SInfo ) != HND_CLIENT ) { if( GetHandleInfo( Hnd, &SInfo ) != HND_CLIENT ) {
HandleUnlock(); HandleUnlock();
@ -2172,9 +2136,8 @@ UpnpRenewSubscriptionAsync( IN UpnpClient_Handle Hnd,
TPJobSetPriority( &job, MED_PRIORITY ); TPJobSetPriority( &job, MED_PRIORITY );
ThreadPoolAdd( &gSendThreadPool, &job, NULL ); ThreadPoolAdd( &gSendThreadPool, &job, NULL );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpRenewSubscriptionAsync \n" ); "Exiting UpnpRenewSubscriptionAsync \n" );
)
return UPNP_E_SUCCESS; return UPNP_E_SUCCESS;
@ -2227,9 +2190,8 @@ UpnpNotify( IN UpnpDevice_Handle Hnd,
return UPNP_E_FINISH; return UPNP_E_FINISH;
} }
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpNotify \n" ); "Inside UpnpNotify \n" );
)
HandleLock(); HandleLock();
if( GetHandleInfo( Hnd, &SInfo ) != HND_DEVICE ) { if( GetHandleInfo( Hnd, &SInfo ) != HND_DEVICE ) {
@ -2253,9 +2215,8 @@ UpnpNotify( IN UpnpDevice_Handle Hnd,
retVal = retVal =
genaNotifyAll( Hnd, DevID, ServName, VarName, NewVal, cVariables ); genaNotifyAll( Hnd, DevID, ServName, VarName, NewVal, cVariables );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpNotify \n" ); "Exiting UpnpNotify \n" );
)
return retVal; return retVal;
@ -2300,9 +2261,8 @@ UpnpNotifyExt( IN UpnpDevice_Handle Hnd,
return UPNP_E_FINISH; return UPNP_E_FINISH;
} }
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpNotify \n" ); "Inside UpnpNotify \n" );
)
HandleLock(); HandleLock();
if( GetHandleInfo( Hnd, &SInfo ) != HND_DEVICE ) { if( GetHandleInfo( Hnd, &SInfo ) != HND_DEVICE ) {
@ -2321,9 +2281,8 @@ UpnpNotifyExt( IN UpnpDevice_Handle Hnd,
HandleUnlock(); HandleUnlock();
retVal = genaNotifyAllExt( Hnd, DevID, ServName, PropSet ); retVal = genaNotifyAllExt( Hnd, DevID, ServName, PropSet );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpNotify \n" ); "Exiting UpnpNotify \n" );
)
return retVal; return retVal;
@ -2379,9 +2338,8 @@ UpnpAcceptSubscription( IN UpnpDevice_Handle Hnd,
return UPNP_E_FINISH; return UPNP_E_FINISH;
} }
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpAcceptSubscription \n" ); "Inside UpnpAcceptSubscription \n" );
)
HandleLock(); HandleLock();
if( GetHandleInfo( Hnd, &SInfo ) != HND_DEVICE ) { if( GetHandleInfo( Hnd, &SInfo ) != HND_DEVICE ) {
@ -2410,9 +2368,8 @@ UpnpAcceptSubscription( IN UpnpDevice_Handle Hnd,
genaInitNotify( Hnd, DevID, ServName, VarName, NewVal, cVariables, genaInitNotify( Hnd, DevID, ServName, VarName, NewVal, cVariables,
SubsId ); SubsId );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpAcceptSubscription \n" ); "Exiting UpnpAcceptSubscription \n" );
)
return retVal; return retVal;
} /***************** End of UpnpAcceptSubscription *********************/ } /***************** End of UpnpAcceptSubscription *********************/
@ -2457,9 +2414,8 @@ UpnpAcceptSubscriptionExt( IN UpnpDevice_Handle Hnd,
return UPNP_E_FINISH; return UPNP_E_FINISH;
} }
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpAcceptSubscription \n" ); "Inside UpnpAcceptSubscription \n" );
)
HandleLock(); HandleLock();
if( GetHandleInfo( Hnd, &SInfo ) != HND_DEVICE ) { if( GetHandleInfo( Hnd, &SInfo ) != HND_DEVICE ) {
@ -2487,9 +2443,8 @@ UpnpAcceptSubscriptionExt( IN UpnpDevice_Handle Hnd,
HandleUnlock(); HandleUnlock();
retVal = genaInitNotifyExt( Hnd, DevID, ServName, PropSet, SubsId ); retVal = genaInitNotifyExt( Hnd, DevID, ServName, PropSet, SubsId );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpAcceptSubscription \n" ); "Exiting UpnpAcceptSubscription \n" );
)
return retVal; return retVal;
@ -2551,11 +2506,11 @@ UpnpSendAction( IN UpnpClient_Handle Hnd,
return UPNP_E_FINISH; return UPNP_E_FINISH;
} }
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpSendAction \n" ); "Inside UpnpSendAction \n" );
) if(DevUDN_const !=NULL) {
if(DevUDN_const !=NULL) UpnpPrintf(UPNP_ALL,API,__FILE__,__LINE__,"non NULL DevUDN is ignored\n");
DBGONLY(UpnpPrintf(UPNP_ALL,API,__FILE__,__LINE__,"non NULL DevUDN is ignored\n");); }
DevUDN_const = NULL; DevUDN_const = NULL;
HandleLock(); HandleLock();
@ -2577,9 +2532,8 @@ UpnpSendAction( IN UpnpClient_Handle Hnd,
retVal = SoapSendAction( ActionURL, ServiceType, Action, RespNodePtr ); retVal = SoapSendAction( ActionURL, ServiceType, Action, RespNodePtr );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpSendAction \n" ); "Exiting UpnpSendAction \n" );
)
return retVal; return retVal;
@ -2634,9 +2588,8 @@ UpnpSendActionEx( IN UpnpClient_Handle Hnd,
return UPNP_E_FINISH; return UPNP_E_FINISH;
} }
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpSendActionEx \n" ); "Inside UpnpSendActionEx \n" );
)
if( Header == NULL ) { if( Header == NULL ) {
retVal = UpnpSendAction( Hnd, ActionURL_const, ServiceType_const, retVal = UpnpSendAction( Hnd, ActionURL_const, ServiceType_const,
@ -2661,9 +2614,8 @@ UpnpSendActionEx( IN UpnpClient_Handle Hnd,
retVal = SoapSendActionEx( ActionURL, ServiceType, Header, retVal = SoapSendActionEx( ActionURL, ServiceType, Header,
Action, RespNodePtr ); Action, RespNodePtr );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpSendAction \n" ); "Exiting UpnpSendAction \n" );
)
return retVal; return retVal;
@ -2718,9 +2670,8 @@ UpnpSendActionAsync( IN UpnpClient_Handle Hnd,
return UPNP_E_FINISH; return UPNP_E_FINISH;
} }
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpSendActionAsync \n" ); "Inside UpnpSendActionAsync \n" );
)
HandleLock(); HandleLock();
if( GetHandleInfo( Hnd, &SInfo ) != HND_CLIENT ) { if( GetHandleInfo( Hnd, &SInfo ) != HND_CLIENT ) {
@ -2774,9 +2725,8 @@ UpnpSendActionAsync( IN UpnpClient_Handle Hnd,
TPJobSetPriority( &job, MED_PRIORITY ); TPJobSetPriority( &job, MED_PRIORITY );
ThreadPoolAdd( &gSendThreadPool, &job, NULL ); ThreadPoolAdd( &gSendThreadPool, &job, NULL );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpSendActionAsync \n" ); "Exiting UpnpSendActionAsync \n" );
)
return UPNP_E_SUCCESS; return UPNP_E_SUCCESS;
@ -2833,9 +2783,8 @@ UpnpSendActionExAsync( IN UpnpClient_Handle Hnd,
return UPNP_E_FINISH; return UPNP_E_FINISH;
} }
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpSendActionExAsync \n" ); "Inside UpnpSendActionExAsync \n" );
)
if( Header == NULL ) { if( Header == NULL ) {
retVal = UpnpSendActionAsync( Hnd, ActionURL_const, retVal = UpnpSendActionAsync( Hnd, ActionURL_const,
@ -2912,9 +2861,8 @@ UpnpSendActionExAsync( IN UpnpClient_Handle Hnd,
TPJobSetPriority( &job, MED_PRIORITY ); TPJobSetPriority( &job, MED_PRIORITY );
ThreadPoolAdd( &gSendThreadPool, &job, NULL ); ThreadPoolAdd( &gSendThreadPool, &job, NULL );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpSendActionAsync \n" ); "Exiting UpnpSendActionAsync \n" );
)
return UPNP_E_SUCCESS; return UPNP_E_SUCCESS;
@ -2956,9 +2904,8 @@ UpnpGetServiceVarStatusAsync( IN UpnpClient_Handle Hnd,
return UPNP_E_FINISH; return UPNP_E_FINISH;
} }
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpGetServiceVarStatusAsync \n" ); "Inside UpnpGetServiceVarStatusAsync \n" );
)
HandleLock(); HandleLock();
if( GetHandleInfo( Hnd, &SInfo ) != HND_CLIENT ) { if( GetHandleInfo( Hnd, &SInfo ) != HND_CLIENT ) {
@ -2994,9 +2941,8 @@ UpnpGetServiceVarStatusAsync( IN UpnpClient_Handle Hnd,
ThreadPoolAdd( &gSendThreadPool, &job, NULL ); ThreadPoolAdd( &gSendThreadPool, &job, NULL );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpGetServiceVarStatusAsync \n" ); "Exiting UpnpGetServiceVarStatusAsync \n" );
)
return UPNP_E_SUCCESS; return UPNP_E_SUCCESS;
@ -3038,9 +2984,8 @@ UpnpGetServiceVarStatus( IN UpnpClient_Handle Hnd,
return UPNP_E_FINISH; return UPNP_E_FINISH;
} }
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpGetServiceVarStatus \n" ); "Inside UpnpGetServiceVarStatus \n" );
)
HandleLock(); HandleLock();
if( GetHandleInfo( Hnd, &SInfo ) != HND_CLIENT ) { if( GetHandleInfo( Hnd, &SInfo ) != HND_CLIENT ) {
@ -3060,9 +3005,8 @@ UpnpGetServiceVarStatus( IN UpnpClient_Handle Hnd,
retVal = SoapGetServiceVarStatus( ActionURL, VarName, &StVarPtr ); retVal = SoapGetServiceVarStatus( ActionURL, VarName, &StVarPtr );
*StVar = StVarPtr; *StVar = StVarPtr;
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpGetServiceVarStatus \n" ); "Exiting UpnpGetServiceVarStatus \n" );
)
return retVal; return retVal;
@ -3339,16 +3283,13 @@ UpnpDownloadXmlDoc( const char *url,
ret_code = UpnpDownloadUrlItem( url, &xml_buf, content_type ); ret_code = UpnpDownloadUrlItem( url, &xml_buf, content_type );
if( ret_code != UPNP_E_SUCCESS ) { if( ret_code != UPNP_E_SUCCESS ) {
DBGONLY( UpnpPrintf( UPNP_CRITICAL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_CRITICAL, API, __FILE__, __LINE__,
"retCode: %d\n", ret_code ); "retCode: %d\n", ret_code );
)
return ret_code; return ret_code;
} }
if( strncasecmp( content_type, "text/xml", strlen( "text/xml" ) ) ) { if( strncasecmp( content_type, "text/xml", strlen( "text/xml" ) ) ) {
DBGONLY(
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, "Not text/xml\n" ); UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, "Not text/xml\n" );
)
// Linksys WRT54G router returns // Linksys WRT54G router returns
// "CONTENT-TYPE: application/octet-stream". // "CONTENT-TYPE: application/octet-stream".
// Let's be nice to Linksys and try to parse document anyway. // Let's be nice to Linksys and try to parse document anyway.
@ -3364,16 +3305,16 @@ UpnpDownloadXmlDoc( const char *url,
free( xml_buf ); free( xml_buf );
if( ret_code != IXML_SUCCESS ) { if( ret_code != IXML_SUCCESS ) {
DBGONLY( UpnpPrintf( UPNP_CRITICAL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_CRITICAL, API, __FILE__, __LINE__,
"Invalid desc\n" ); "Invalid desc\n" );
)
if( ret_code == IXML_INSUFFICIENT_MEMORY ) { if( ret_code == IXML_INSUFFICIENT_MEMORY ) {
return UPNP_E_OUTOF_MEMORY; return UPNP_E_OUTOF_MEMORY;
} else { } else {
return UPNP_E_INVALID_DESC; return UPNP_E_INVALID_DESC;
} }
} else { } else {
DBGONLY( xml_buf = ixmlPrintNode( ( IXML_Node * ) * xmlDoc ); #ifdef DEBUG
xml_buf = ixmlPrintNode( ( IXML_Node * ) * xmlDoc );
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Printing the Parsed xml document \n %s\n", "Printing the Parsed xml document \n %s\n",
xml_buf ); xml_buf );
@ -3381,7 +3322,8 @@ UpnpDownloadXmlDoc( const char *url,
"****************** END OF Parsed XML Doc *****************\n" ); "****************** END OF Parsed XML Doc *****************\n" );
ixmlFreeDOMString( xml_buf ); ixmlFreeDOMString( xml_buf );
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpDownloadXmlDoc\n" ); ) "Exiting UpnpDownloadXmlDoc\n" );
#endif
return UPNP_E_SUCCESS; return UPNP_E_SUCCESS;
} }
@ -3410,9 +3352,8 @@ void
UpnpThreadDistribution( struct UpnpNonblockParam *Param ) UpnpThreadDistribution( struct UpnpNonblockParam *Param )
{ {
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpThreadDistribution \n" ); "Inside UpnpThreadDistribution \n" );
)
switch ( Param->FunName ) { switch ( Param->FunName ) {
#if EXCLUDE_GENA == 0 #if EXCLUDE_GENA == 0
@ -3500,9 +3441,8 @@ free( Param ); break;}
break; break;
} // end of switch(Param->FunName) } // end of switch(Param->FunName)
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpThreadDistribution \n" ); "Exiting UpnpThreadDistribution \n" );
)
} /****************** End of UpnpThreadDistribution *********************/ } /****************** End of UpnpThreadDistribution *********************/
#endif #endif
@ -3662,26 +3602,20 @@ GetHandleInfo( UpnpClient_Handle Hnd,
struct Handle_Info ** HndInfo ) struct Handle_Info ** HndInfo )
{ {
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"GetHandleInfo: Handle is %d\n", Hnd ); "GetHandleInfo: Handle is %d\n", Hnd );
)
if( Hnd < 1 || Hnd >= NUM_HANDLE ) { if( Hnd < 1 || Hnd >= NUM_HANDLE ) {
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"GetHandleInfo : Handle out of range\n" ); "GetHandleInfo : Handle out of range\n" );
)
return UPNP_E_INVALID_HANDLE; return UPNP_E_INVALID_HANDLE;
} }
if( HandleTable[Hnd] != NULL ) { if( HandleTable[Hnd] != NULL ) {
*HndInfo = ( struct Handle_Info * )HandleTable[Hnd]; *HndInfo = ( struct Handle_Info * )HandleTable[Hnd];
return ( ( struct Handle_Info * )*HndInfo )->HType; return ( ( struct Handle_Info * )*HndInfo )->HType;
} }
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"GetHandleInfo : exiting\n" ); "GetHandleInfo : exiting\n" );
)
return UPNP_E_INVALID_HANDLE; return UPNP_E_INVALID_HANDLE;
@ -3703,9 +3637,8 @@ int
FreeHandle( int Upnp_Handle ) FreeHandle( int Upnp_Handle )
{ {
if( Upnp_Handle < 1 || Upnp_Handle >= NUM_HANDLE ) { if( Upnp_Handle < 1 || Upnp_Handle >= NUM_HANDLE ) {
DBGONLY( UpnpPrintf( UPNP_CRITICAL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_CRITICAL, API, __FILE__, __LINE__,
"FreeHandleInfo : Handle out of range\n" ); "FreeHandleInfo : Handle out of range\n" );
)
return UPNP_E_INVALID_HANDLE; return UPNP_E_INVALID_HANDLE;
} }
@ -3736,7 +3669,7 @@ int PrintHandleInfo( IN UpnpClient_Handle Hnd )
struct Handle_Info * HndInfo; struct Handle_Info * HndInfo;
if (HandleTable[Hnd] != NULL) { if (HandleTable[Hnd] != NULL) {
HndInfo = HandleTable[Hnd]; HndInfo = HandleTable[Hnd];
DBGONLY( #ifdef DEBUG
UpnpPrintf(UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf(UPNP_ALL, API, __FILE__, __LINE__,
"Printing information for Handle_%d\n", Hnd); "Printing information for Handle_%d\n", Hnd);
UpnpPrintf(UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf(UPNP_ALL, API, __FILE__, __LINE__,
@ -3746,7 +3679,7 @@ int PrintHandleInfo( IN UpnpClient_Handle Hnd )
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"DescURL_%s\n", HndInfo->DescURL ); "DescURL_%s\n", HndInfo->DescURL );
) )
) #endif
} else { } else {
return UPNP_E_INVALID_HANDLE; return UPNP_E_INVALID_HANDLE;
} }
@ -3775,12 +3708,10 @@ void printNodes( IXML_Node * tmpRoot, int depth )
NodeType = ixmlNode_getNodeType(ChildNode1); NodeType = ixmlNode_getNodeType(ChildNode1);
NodeValue = ixmlNode_getNodeValue(ChildNode1); NodeValue = ixmlNode_getNodeValue(ChildNode1);
NodeName = ixmlNode_getNodeName(ChildNode1); NodeName = ixmlNode_getNodeName(ChildNode1);
DBGONLY(
UpnpPrintf(UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf(UPNP_ALL, API, __FILE__, __LINE__,
"DEPTH-%2d-IXML_Node Type %d, " "DEPTH-%2d-IXML_Node Type %d, "
"IXML_Node Name: %s, IXML_Node Value: %s\n", "IXML_Node Name: %s, IXML_Node Value: %s\n",
depth, NodeType, NodeName, NodeValue); depth, NodeType, NodeName, NodeValue);
)
} }
} }
@ -3839,9 +3770,8 @@ void printNodes( IXML_Node * tmpRoot, int depth )
// Create an unbound datagram socket to do the SIOCGIFADDR ioctl on. // Create an unbound datagram socket to do the SIOCGIFADDR ioctl on.
if( ( LocalSock = socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP ) ) < 0 ) { if( ( LocalSock = socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP ) ) < 0 ) {
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Can't create addrlist socket\n" ); "Can't create addrlist socket\n" );
)
return UPNP_E_INIT; return UPNP_E_INIT;
} }
// Get the interface configuration information... // Get the interface configuration information...
@ -3850,9 +3780,8 @@ void printNodes( IXML_Node * tmpRoot, int depth )
nResult = ioctl( LocalSock, SIOCGIFCONF, &ifConf ); nResult = ioctl( LocalSock, SIOCGIFCONF, &ifConf );
if( nResult < 0 ) { if( nResult < 0 ) {
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"DiscoverInterfaces: SIOCGIFCONF returned error\n" ); "DiscoverInterfaces: SIOCGIFCONF returned error\n" );
)
return UPNP_E_INIT; return UPNP_E_INIT;
} }
@ -3866,11 +3795,9 @@ void printNodes( IXML_Node * tmpRoot, int depth )
// See if this is the sort of interface we want to deal with. // See if this is the sort of interface we want to deal with.
strcpy( ifReq.ifr_name, pifReq->ifr_name ); strcpy( ifReq.ifr_name, pifReq->ifr_name );
if( ioctl( LocalSock, SIOCGIFFLAGS, &ifReq ) < 0 ) { if( ioctl( LocalSock, SIOCGIFFLAGS, &ifReq ) < 0 ) {
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Can't get interface flags for %s:\n", "Can't get interface flags for %s:\n",
ifReq.ifr_name ); ifReq.ifr_name );
)
} }
// Skip loopback, point-to-point and down interfaces, // Skip loopback, point-to-point and down interfaces,
// except don't skip down interfaces // except don't skip down interfaces
@ -3899,10 +3826,9 @@ void printNodes( IXML_Node * tmpRoot, int depth )
strncpy( out, inet_ntoa( LocalAddr.sin_addr ), LINE_SIZE ); strncpy( out, inet_ntoa( LocalAddr.sin_addr ), LINE_SIZE );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside getlocalhostname : after strncpy %s\n", "Inside getlocalhostname : after strncpy %s\n",
out ); out );
)
return UPNP_E_SUCCESS; return UPNP_E_SUCCESS;
#endif #endif
} }

View File

@ -116,7 +116,7 @@ UpnpInitLog( )
/*************************************************************************** /***************************************************************************
* Function : UpnpSetLogLevel * Function : UpnpSetLogLevel
* *
* Parameters: void * Parameters: Upnp_LogLevel log_level
* *
* Description: * Description:
* This functions set the log level (see {\tt Upnp_LogLevel} * This functions set the log level (see {\tt Upnp_LogLevel}
@ -152,6 +152,42 @@ UpnpCloseLog( )
} }
/***************************************************************************
* Function : DebugAtThisLevel
*
* Parameters:
* IN Dbg_Level DLevel: The level of the debug logging. It will decide
* whether debug statement will go to standard output,
* or any of the log files.
* IN Dbg_Module Module: debug will go in the name of this module
*
* Description:
* This functions returns true if debug output should be done in this
* module.
*
* Returns: int
***************************************************************************/
#ifdef DEBUG
int DebugAtThisLevel(
IN Upnp_LogLevel DLevel,
IN Dbg_Module Module)
{
int ret = g_log_level >= DLevel;
ret &=
DEBUG_ALL ||
(Module == SSDP && DEBUG_SSDP ) ||
(Module == SOAP && DEBUG_SOAP ) ||
(Module == GENA && DEBUG_GENA ) ||
(Module == TPOOL && DEBUG_TPOOL) ||
(Module == MSERV && DEBUG_MSERV) ||
(Module == DOM && DEBUG_DOM ) ||
(Module == HTTP && DEBUG_HTTP );
return ret;
}
#endif
/*************************************************************************** /***************************************************************************
* Function : UpnpPrintf * Function : UpnpPrintf
* *
@ -173,64 +209,46 @@ UpnpCloseLog( )
* statement is coming * statement is coming
* Returns: void * Returns: void
***************************************************************************/ ***************************************************************************/
DBGONLY( void UpnpPrintf( IN Upnp_LogLevel DLevel, #ifdef DEBUG
void UpnpPrintf(
IN Upnp_LogLevel DLevel,
IN Dbg_Module Module, IN Dbg_Module Module,
IN const char *DbgFileName, IN const char *DbgFileName,
IN int DbgLineNo, IN int DbgLineNo,
IN const char *FmtStr, IN const char *FmtStr,
... ) { ... )
{
va_list ArgList; va_list ArgList;
if (!DebugAtThisLevel(DLevel, Module)) {
return;
}
ithread_mutex_lock(&GlobalDebugMutex);
va_start(ArgList, FmtStr); va_start(ArgList, FmtStr);
if( g_log_level < DLevel ) return; if( DEBUG_ALL == 0 ) { if (!DEBUG_TARGET) {
switch ( Module ) { if( DbgFileName ) {
case SSDP: UpnpDisplayFileAndLine(stdout, DbgFileName, DbgLineNo);
if( DEBUG_SSDP == 1 ) break;
else
return; case SOAP:
if( DEBUG_SOAP == 1 ) break;
else
return; case GENA:
if( DEBUG_GENA == 1 ) break;
else
return; case TPOOL:
if( DEBUG_TPOOL == 1 ) break;
else
return; case MSERV:
if( DEBUG_MSERV == 1 ) break;
else
return; case DOM:
if( DEBUG_DOM == 1 ) break;
else
return; case HTTP:
if( DEBUG_HTTP == 1 ) break;
else
return; case API:
if( DEBUG_API == 1 ) break;
else
return; default:
return;}
} }
vfprintf(stdout, FmtStr, ArgList);
ithread_mutex_lock( &GlobalDebugMutex ); if( DEBUG_TARGET == 0 ) { fflush(stdout);
} else if (DLevel == 0) {
if (DbgFileName) { if (DbgFileName) {
UpnpDisplayFileAndLine( stdout, DbgFileName, DbgLineNo );} UpnpDisplayFileAndLine(ErrFileHnd, DbgFileName, DbgLineNo);
vfprintf( stdout, FmtStr, ArgList ); fflush( stdout );}
else
{
if( DLevel == 0 ) {
if( DbgFileName ) {
UpnpDisplayFileAndLine( ErrFileHnd, DbgFileName, DbgLineNo );}
vfprintf( ErrFileHnd, FmtStr, ArgList ); fflush( ErrFileHnd );}
else
{
if( DbgFileName ) {
UpnpDisplayFileAndLine( InfoFileHnd, DbgFileName, DbgLineNo );}
vfprintf( InfoFileHnd, FmtStr, ArgList ); fflush( InfoFileHnd );}
} }
va_end( ArgList ); ithread_mutex_unlock( &GlobalDebugMutex );} vfprintf(ErrFileHnd, FmtStr, ArgList);
fflush(ErrFileHnd);
) } else {
if (DbgFileName) {
UpnpDisplayFileAndLine(InfoFileHnd, DbgFileName, DbgLineNo);
}
vfprintf(InfoFileHnd, FmtStr, ArgList);
fflush(InfoFileHnd);
}
va_end(ArgList);
ithread_mutex_unlock(&GlobalDebugMutex);
}
#endif
/*************************************************************************** /***************************************************************************
@ -249,46 +267,26 @@ return; default:
* NULL : if the module is turn off for debug * NULL : if the module is turn off for debug
* else returns the right file descriptor * else returns the right file descriptor
***************************************************************************/ ***************************************************************************/
DBGONLY( FILE * GetDebugFile( Upnp_LogLevel DLevel, Dbg_Module Module ) { #ifdef DEBUG
if( g_log_level < DLevel ) return NULL; if( DEBUG_ALL == 0 ) { FILE *GetDebugFile( Upnp_LogLevel DLevel, Dbg_Module Module )
switch ( Module ) { {
case SSDP: FILE *ret;
if( DEBUG_SSDP == 1 ) break;
else if (!DebugAtThisLevel(DLevel, Module)) {
return NULL; case SOAP: ret = NULL;
if( DEBUG_SOAP == 1 ) break;
else
return NULL; case GENA:
if( DEBUG_GENA == 1 ) break;
else
return NULL; case TPOOL:
if( DEBUG_TPOOL == 1 ) break;
else
return NULL; case MSERV:
if( DEBUG_MSERV == 1 ) break;
else
return NULL; case DOM:
if( DEBUG_DOM == 1 ) break;
else
return NULL; case API:
if( DEBUG_API == 1 ) break;
else
return NULL; default:
return NULL;}
} }
if( DEBUG_TARGET == 0 ) { if (!DEBUG_TARGET) {
return stdout;} ret = stdout;
else } else if (DLevel == 0) {
{ ret = ErrFileHnd;
if( DLevel == 0 ) { } else {
return ErrFileHnd;} ret = InfoFileHnd;
else
{
return InfoFileHnd;}
} }
return ret;
} }
) #endif
/*************************************************************************** /***************************************************************************
@ -305,17 +303,26 @@ return NULL; default:
* debug statement is coming to the log file * debug statement is coming to the log file
* Returns: void * Returns: void
***************************************************************************/ ***************************************************************************/
DBGONLY( void UpnpDisplayFileAndLine( IN FILE * fd, #ifdef DEBUG
void UpnpDisplayFileAndLine(
IN FILE * fd,
IN const char *DbgFileName, IN const char *DbgFileName,
IN int DbgLineNo ) { IN int DbgLineNo)
{
int starlength = 66; int starlength = 66;
const char *lines[2]; const char *lines[2];
char FileAndLine[500]; lines[0] = "DEBUG"; if( DbgFileName ) { char FileAndLine[500];
sprintf( FileAndLine, "FILE: %s, LINE: %d", DbgFileName, lines[0] = "DEBUG";
DbgLineNo ); lines[1] = FileAndLine;} if (DbgFileName) {
sprintf(FileAndLine,
UpnpDisplayBanner( fd, lines, 2, starlength ); fflush( fd );} "FILE: %s, LINE: %d",
) DbgFileName, DbgLineNo);
lines[1] = FileAndLine;
}
UpnpDisplayBanner(fd, lines, 2, starlength);
fflush(fd);
}
#endif
/*************************************************************************** /***************************************************************************
@ -332,47 +339,58 @@ return NULL; default:
* per the requested banner * per the requested banner
* Returns: void * Returns: void
***************************************************************************/ ***************************************************************************/
DBGONLY( void UpnpDisplayBanner( IN FILE * fd, #ifdef DEBUG
void UpnpDisplayBanner(
IN FILE * fd,
IN const char **lines, IN const char **lines,
IN size_t size, IN size_t size,
IN int starLength ) { IN int starLength)
char *stars = ( char * )malloc( starLength + 1 ); {
const char *line = NULL;
int leftMarginLength = starLength / 2 + 1; int leftMarginLength = starLength / 2 + 1;
int rightMarginLength = starLength / 2 + 1; int rightMarginLength = starLength / 2 + 1;
char *leftMargin = ( char * )malloc( leftMarginLength );
char *rightMargin = ( char * )malloc( rightMarginLength );
int i = 0; int i = 0;
int LineSize = 0; int LineSize = 0;
int starLengthMinus2 = starLength - 2;
char *leftMargin = ( char * )malloc( leftMarginLength );
char *rightMargin = ( char * )malloc( rightMarginLength );
char *stars = ( char * )malloc( starLength + 1 );
char *currentLine = ( char * )malloc( starLength + 1 ); char *currentLine = ( char * )malloc( starLength + 1 );
const char *line = NULL;
memset( stars, '*', starLength ); memset( stars, '*', starLength );
stars[starLength] = 0; stars[starLength] = 0;
memset( leftMargin, 0, leftMarginLength ); memset( leftMargin, 0, leftMarginLength );
memset( rightMargin, 0, rightMarginLength ); memset( rightMargin, 0, rightMarginLength );
fprintf( fd, "\n%s\n", stars ); for( i = 0; i < size; i++ ) { fprintf( fd, "\n%s\n", stars );
for( i = 0; i < size; i++ ) {
LineSize = strlen( lines[i] ); LineSize = strlen( lines[i] );
line = lines[i]; while( LineSize > ( starLength - 2 ) ) { line = lines[i];
memcpy( currentLine, line, ( starLength - 2 ) ); while( LineSize > starLengthMinus2 ) {
currentLine[( starLength - 2 )] = 0; memcpy( currentLine, line, starLengthMinus2 );
currentLine[starLengthMinus2] = 0;
fprintf( fd, "*%s*\n", currentLine ); fprintf( fd, "*%s*\n", currentLine );
LineSize -= ( starLength - 2 ); line += ( starLength - 2 );} LineSize -= starLengthMinus2;
line += starLengthMinus2;
}
leftMarginLength = (starLengthMinus2 - LineSize)/2;
if( LineSize % 2 == 0 ) { if( LineSize % 2 == 0 ) {
leftMarginLength = rightMarginLength = rightMarginLength = leftMarginLength;
( ( starLength - 2 ) - LineSize ) / 2;} } else {
else rightMarginLength = leftMarginLength + 1;
{ }
leftMarginLength = ( ( starLength - 2 ) - LineSize ) / 2;
rightMarginLength =
( ( starLength - 2 ) - LineSize ) / 2 + 1;}
memset( leftMargin, ' ', leftMarginLength ); memset( leftMargin, ' ', leftMarginLength );
memset( rightMargin, ' ', rightMarginLength ); memset( rightMargin, ' ', rightMarginLength );
leftMargin[leftMarginLength] = 0; leftMargin[leftMarginLength] = 0;
rightMargin[rightMarginLength] = 0; rightMargin[rightMarginLength] = 0;
fprintf( fd, "*%s%s%s*\n", leftMargin, line, rightMargin );} fprintf( fd, "*%s%s%s*\n", leftMargin, line, rightMargin );
}
fprintf( fd, "%s\n\n", stars ); fprintf( fd, "%s\n\n", stars );
free( currentLine );
free( stars );
free( rightMargin );
free( leftMargin ); free( leftMargin );
free( rightMargin ); free( stars ); free( currentLine );} }
) #endif

View File

@ -104,9 +104,8 @@ genaCallback( IN http_parser_t * parser,
// subscribe // subscribe
gena_process_subscription_request( info, request );} gena_process_subscription_request( info, request );}
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_ALL, GENA, __FILE__, __LINE__,
( UPNP_ALL, GENA, __FILE__, __LINE__, "got subscription request\n" );
"got subscription request\n" ); )
) )
} }
else else

View File

@ -72,14 +72,14 @@ GenaAutoRenewSubscription( IN void *input )
int eventType = 0; int eventType = 0;
if( AUTO_RENEW_TIME == 0 ) { if( AUTO_RENEW_TIME == 0 ) {
DBGONLY( UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__,
"GENA SUB EXPIRED" ) ); "GENA SUB EXPIRED" );
sub_struct->ErrCode = UPNP_E_SUCCESS; sub_struct->ErrCode = UPNP_E_SUCCESS;
send_callback = 1; send_callback = 1;
eventType = UPNP_EVENT_SUBSCRIPTION_EXPIRED; eventType = UPNP_EVENT_SUBSCRIPTION_EXPIRED;
} else { } else {
DBGONLY( UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__,
"GENA AUTO RENEW" ) ); "GENA AUTO RENEW" );
if( ( ( sub_struct->ErrCode = genaRenewSubscription( event->handle, if( ( ( sub_struct->ErrCode = genaRenewSubscription( event->handle,
sub_struct-> sub_struct->
Sid, Sid,
@ -99,8 +99,8 @@ GenaAutoRenewSubscription( IN void *input )
free_upnp_timeout( event ); free_upnp_timeout( event );
return; return;
} }
DBGONLY( UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__,
"HANDLE IS VALID" ) ); "HANDLE IS VALID" );
callback_fun = handle_info->Callback; callback_fun = handle_info->Callback;
cookie = handle_info->Cookie; cookie = handle_info->Cookie;
HandleUnlock(); HandleUnlock();
@ -538,8 +538,8 @@ genaSubscribe( IN UpnpClient_Handle client_handle,
struct Handle_Info *handle_info; struct Handle_Info *handle_info;
char *EventURL = NULL; char *EventURL = NULL;
DBGONLY( UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__,
"GENA SUBSCRIBE BEGIN" ) ); "GENA SUBSCRIBE BEGIN" );
HandleLock(); HandleLock();
memset( out_sid, 0, sizeof( Upnp_SID ) ); memset( out_sid, 0, sizeof( Upnp_SID ) );
@ -557,9 +557,9 @@ genaSubscribe( IN UpnpClient_Handle client_handle,
gena_subscribe( PublisherURL, TimeOut, NULL, &ActualSID ); gena_subscribe( PublisherURL, TimeOut, NULL, &ActualSID );
HandleLock(); HandleLock();
if( return_code != UPNP_E_SUCCESS ) { if( return_code != UPNP_E_SUCCESS ) {
DBGONLY( UpnpPrintf( UPNP_CRITICAL, GENA, __FILE__, __LINE__, UpnpPrintf( UPNP_CRITICAL, GENA, __FILE__, __LINE__,
"SUBSCRIBE FAILED in transfer error code: %d returned\n", "SUBSCRIBE FAILED in transfer error code: %d returned\n",
return_code ) ); return_code );
goto error_handler; goto error_handler;
} }
@ -663,8 +663,8 @@ genaRenewSubscription( IN UpnpClient_Handle client_handle,
free_upnp_timeout( ( upnp_timeout * ) tempJob.arg ); free_upnp_timeout( ( upnp_timeout * ) tempJob.arg );
} }
DBGONLY( UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__,
"REMOVED AUTO RENEW EVENT" ) ); "REMOVED AUTO RENEW EVENT" );
sub->RenewEventId = -1; sub->RenewEventId = -1;
return_code = copy_client_subscription( sub, &sub_copy ); return_code = copy_client_subscription( sub, &sub_copy );

View File

@ -65,9 +65,9 @@ genaUnregisterDevice( IN UpnpDevice_Handle device_handle )
HandleLock(); HandleLock();
if( GetHandleInfo( device_handle, &handle_info ) != HND_DEVICE ) { if( GetHandleInfo( device_handle, &handle_info ) != HND_DEVICE ) {
DBGONLY( UpnpPrintf( UPNP_CRITICAL, GENA, __FILE__, __LINE__, UpnpPrintf( UPNP_CRITICAL, GENA, __FILE__, __LINE__,
"genaUnregisterDevice : BAD Handle : %d\n", "genaUnregisterDevice : BAD Handle : %d\n",
device_handle ) ); device_handle );
HandleUnlock(); HandleUnlock();
return GENA_E_BAD_HANDLE; return GENA_E_BAD_HANDLE;
@ -203,10 +203,10 @@ notify_send_and_recv( IN uri_type * destination_url,
SOCKINFO info; SOCKINFO info;
// connect // connect
DBGONLY( UpnpPrintf( UPNP_ALL, GENA, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, GENA, __FILE__, __LINE__,
"gena notify to: %.*s\n", "gena notify to: %.*s\n",
(int)destination_url->hostport.text.size, (int)destination_url->hostport.text.size,
destination_url->hostport.text.buff ); ) destination_url->hostport.text.buff );
conn_fd = http_Connect( destination_url, &url ); conn_fd = http_Connect( destination_url, &url );
if( conn_fd < 0 ) { if( conn_fd < 0 ) {
@ -477,8 +477,8 @@ genaInitNotify( IN UpnpDevice_Handle device_handle,
notify_thread_struct *thread_struct = NULL; notify_thread_struct *thread_struct = NULL;
DBGONLY( UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__,
"GENA BEGIN INITIAL NOTIFY " ) ); "GENA BEGIN INITIAL NOTIFY " );
reference_count = ( int * )malloc( sizeof( int ) ); reference_count = ( int * )malloc( sizeof( int ) );
@ -523,9 +523,9 @@ genaInitNotify( IN UpnpDevice_Handle device_handle,
return GENA_E_BAD_SERVICE; return GENA_E_BAD_SERVICE;
} }
DBGONLY( UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__,
"FOUND SERVICE IN INIT NOTFY: UDN %s, ServID: %s ", "FOUND SERVICE IN INIT NOTFY: UDN %s, ServID: %s ",
UDN, servId ) ); UDN, servId );
if( ( ( sub = GetSubscriptionSID( sid, service ) ) == NULL ) || if( ( ( sub = GetSubscriptionSID( sid, service ) ) == NULL ) ||
( sub->active ) ) { ( sub->active ) ) {
@ -536,9 +536,8 @@ genaInitNotify( IN UpnpDevice_Handle device_handle,
return GENA_E_BAD_SID; return GENA_E_BAD_SID;
} }
DBGONLY( UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__,
"FOUND SUBSCRIPTION IN INIT NOTIFY: SID %s ", "FOUND SUBSCRIPTION IN INIT NOTIFY: SID %s ", sid );
sid ) );
sub->active = 1; sub->active = 1;
@ -553,9 +552,9 @@ genaInitNotify( IN UpnpDevice_Handle device_handle,
return return_code; return return_code;
} }
DBGONLY( UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__,
"GENERATED PROPERY SET IN INIT NOTIFY: \n'%s'\n", "GENERATED PROPERY SET IN INIT NOTIFY: \n'%s'\n",
propertySet ) ); propertySet );
headers_size = strlen( "CONTENT-TYPE text/xml\r\n" ) + headers_size = strlen( "CONTENT-TYPE text/xml\r\n" ) +
strlen( "CONTENT-LENGTH: \r\n" ) + MAX_CONTENT_LENGTH + strlen( "CONTENT-LENGTH: \r\n" ) + MAX_CONTENT_LENGTH +
@ -668,8 +667,8 @@ genaInitNotifyExt( IN UpnpDevice_Handle device_handle,
notify_thread_struct *thread_struct = NULL; notify_thread_struct *thread_struct = NULL;
DBGONLY( UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__,
"GENA BEGIN INITIAL NOTIFY EXT" ) ); "GENA BEGIN INITIAL NOTIFY EXT" );
reference_count = ( int * )malloc( sizeof( int ) ); reference_count = ( int * )malloc( sizeof( int ) );
if( reference_count == NULL ) { if( reference_count == NULL ) {
@ -712,9 +711,9 @@ genaInitNotifyExt( IN UpnpDevice_Handle device_handle,
HandleUnlock(); HandleUnlock();
return GENA_E_BAD_SERVICE; return GENA_E_BAD_SERVICE;
} }
DBGONLY( UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__,
"FOUND SERVICE IN INIT NOTFY EXT: UDN %s, ServID: %s\n", "FOUND SERVICE IN INIT NOTFY EXT: UDN %s, ServID: %s\n",
UDN, servId ) ); UDN, servId );
if( ( ( sub = GetSubscriptionSID( sid, service ) ) == NULL ) || if( ( ( sub = GetSubscriptionSID( sid, service ) ) == NULL ) ||
( sub->active ) ) { ( sub->active ) ) {
@ -724,9 +723,8 @@ genaInitNotifyExt( IN UpnpDevice_Handle device_handle,
HandleUnlock(); HandleUnlock();
return GENA_E_BAD_SID; return GENA_E_BAD_SID;
} }
DBGONLY( UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__,
"FOUND SUBSCRIPTION IN INIT NOTIFY EXT: SID %s", "FOUND SUBSCRIPTION IN INIT NOTIFY EXT: SID %s", sid );
sid ) );
sub->active = 1; sub->active = 1;
@ -739,9 +737,9 @@ genaInitNotifyExt( IN UpnpDevice_Handle device_handle,
return UPNP_E_INVALID_PARAM; return UPNP_E_INVALID_PARAM;
} }
DBGONLY( UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__,
"GENERATED PROPERY SET IN INIT EXT NOTIFY: %s", "GENERATED PROPERY SET IN INIT EXT NOTIFY: %s",
propertySet ) ); propertySet );
headers_size = strlen( "CONTENT-TYPE text/xml\r\n" ) + headers_size = strlen( "CONTENT-TYPE text/xml\r\n" ) +
strlen( "CONTENT-LENGTH: \r\n" ) + MAX_CONTENT_LENGTH + strlen( "CONTENT-LENGTH: \r\n" ) + MAX_CONTENT_LENGTH +
@ -1317,8 +1315,8 @@ gena_process_subscription_request( IN SOCKINFO * info,
memptr callback_hdr; memptr callback_hdr;
memptr timeout_hdr; memptr timeout_hdr;
DBGONLY( UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__,
"Subscription Request Received:\n" ) ); "Subscription Request Received:\n" );
if( httpmsg_find_hdr( request, HDR_NT, &nt_hdr ) == NULL ) { if( httpmsg_find_hdr( request, HDR_NT, &nt_hdr ) == NULL ) {
error_respond( info, HTTP_BAD_REQUEST, request ); error_respond( info, HTTP_BAD_REQUEST, request );
@ -1347,10 +1345,9 @@ gena_process_subscription_request( IN SOCKINFO * info,
return; return;
} }
DBGONLY( UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__,
"SubscriptionRequest for event URL path: %s\n", "SubscriptionRequest for event URL path: %s\n",
event_url_path ); event_url_path );
)
HandleLock(); HandleLock();
@ -1371,11 +1368,11 @@ gena_process_subscription_request( IN SOCKINFO * info,
return; return;
} }
DBGONLY( UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__,
"Subscription Request: Number of Subscriptions already %d\n " "Subscription Request: Number of Subscriptions already %d\n "
"Max Subscriptions allowed: %d\n", "Max Subscriptions allowed: %d\n",
service->TotalSubscriptions, service->TotalSubscriptions,
handle_info->MaxSubscriptions ) ); handle_info->MaxSubscriptions );
// too many subscriptions // too many subscriptions
if( handle_info->MaxSubscriptions != -1 && if( handle_info->MaxSubscriptions != -1 &&
@ -1548,12 +1545,11 @@ gena_process_subscription_renewal_request( IN SOCKINFO * info,
return; return;
} }
DBGONLY( UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__,
"Renew request: Number of subscriptions already: %d\n " "Renew request: Number of subscriptions already: %d\n "
"Max Subscriptions allowed:%d\n", "Max Subscriptions allowed:%d\n",
service->TotalSubscriptions, service->TotalSubscriptions,
handle_info->MaxSubscriptions ); handle_info->MaxSubscriptions );
)
// too many subscriptions // too many subscriptions
if( handle_info->MaxSubscriptions != -1 && if( handle_info->MaxSubscriptions != -1 &&
service->TotalSubscriptions > handle_info->MaxSubscriptions ) { service->TotalSubscriptions > handle_info->MaxSubscriptions ) {

View File

@ -174,10 +174,8 @@ dispatch_request( IN SOCKINFO * info,
case HTTPMETHOD_NOTIFY: case HTTPMETHOD_NOTIFY:
case HTTPMETHOD_SUBSCRIBE: case HTTPMETHOD_SUBSCRIBE:
case HTTPMETHOD_UNSUBSCRIBE: case HTTPMETHOD_UNSUBSCRIBE:
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_INFO, MSERV, __FILE__, __LINE__,
( UPNP_INFO, MSERV, __FILE__, __LINE__,
"miniserver %d: got GENA msg\n", info->socket ); "miniserver %d: got GENA msg\n", info->socket );
)
callback = gGenaCallback; callback = gGenaCallback;
break; break;
@ -275,10 +273,8 @@ handle_request( void *args )
struct mserv_request_t *request = ( struct mserv_request_t * )args; struct mserv_request_t *request = ( struct mserv_request_t * )args;
int connfd = request->connfd; int connfd = request->connfd;
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_INFO, MSERV, __FILE__, __LINE__,
( UPNP_INFO, MSERV, __FILE__, __LINE__,
"miniserver %d: READING\n", connfd ); "miniserver %d: READING\n", connfd );
)
//parser_request_init( &parser ); ////LEAK_FIX_MK //parser_request_init( &parser ); ////LEAK_FIX_MK
hmsg = &parser.msg; hmsg = &parser.msg;
@ -295,10 +291,8 @@ handle_request( void *args )
goto error_handler; goto error_handler;
} }
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_INFO, MSERV, __FILE__, __LINE__,
( UPNP_INFO, MSERV, __FILE__, __LINE__,
"miniserver %d: PROCESSING...\n", connfd ); "miniserver %d: PROCESSING...\n", connfd );
)
// dispatch // dispatch
http_error_code = dispatch_request( &info, &parser ); http_error_code = dispatch_request( &info, &parser );
if( http_error_code != 0 ) { if( http_error_code != 0 ) {
@ -316,10 +310,8 @@ handle_request( void *args )
handle_error( &info, http_error_code, major, minor ); handle_error( &info, http_error_code, major, minor );
} }
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_INFO, MSERV, __FILE__, __LINE__,
( UPNP_INFO, MSERV, __FILE__, __LINE__,
"miniserver %d: COMPLETE\n", connfd ); "miniserver %d: COMPLETE\n", connfd );
)
sock_destroy( &info, SD_BOTH ); //should shutdown completely sock_destroy( &info, SD_BOTH ); //should shutdown completely
httpmsg_destroy( hmsg ); httpmsg_destroy( hmsg );
@ -352,10 +344,8 @@ schedule_request_job( IN int connfd,
( struct mserv_request_t * ) ( struct mserv_request_t * )
malloc( sizeof( struct mserv_request_t ) ); malloc( sizeof( struct mserv_request_t ) );
if( request == NULL ) { if( request == NULL ) {
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_INFO, MSERV, __FILE__, __LINE__,
( UPNP_INFO, MSERV, __FILE__, __LINE__,
"mserv %d: out of memory\n", connfd ); "mserv %d: out of memory\n", connfd );
)
shutdown( request->connfd, SD_BOTH ); shutdown( request->connfd, SD_BOTH );
UpnpCloseSocket( connfd ); UpnpCloseSocket( connfd );
return; return;
@ -370,10 +360,8 @@ schedule_request_job( IN int connfd,
TPJobSetPriority( &job, MED_PRIORITY ); TPJobSetPriority( &job, MED_PRIORITY );
if( ThreadPoolAdd( &gRecvThreadPool, &job, NULL ) != 0 ) { if( ThreadPoolAdd( &gRecvThreadPool, &job, NULL ) != 0 ) {
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_INFO, MSERV, __FILE__, __LINE__,
( UPNP_INFO, MSERV, __FILE__, __LINE__,
"mserv %d: cannot schedule request\n", connfd ); "mserv %d: cannot schedule request\n", connfd );
)
free( request ); free( request );
shutdown( connfd, SD_BOTH ); shutdown( connfd, SD_BOTH );
UpnpCloseSocket( connfd ); UpnpCloseSocket( connfd );
@ -446,10 +434,8 @@ RunMiniServer( MiniServerSockArray * miniSock )
if( select( maxMiniSock, &rdSet, NULL, &expSet, NULL ) == if( select( maxMiniSock, &rdSet, NULL, &expSet, NULL ) ==
UPNP_SOCKETERROR ) { UPNP_SOCKETERROR ) {
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_CRITICAL, SSDP, __FILE__, __LINE__,
( UPNP_CRITICAL, SSDP, __FILE__, __LINE__,
"Error in select call !!!\n" ); "Error in select call !!!\n" );
)
continue; continue;
} else { } else {
@ -459,11 +445,9 @@ RunMiniServer( MiniServerSockArray * miniSock )
( struct sockaddr * )&clientAddr, ( struct sockaddr * )&clientAddr,
&clientLen ); &clientLen );
if( connectHnd == UPNP_INVALID_SOCKET ) { if( connectHnd == UPNP_INVALID_SOCKET ) {
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_INFO, MSERV, __FILE__, __LINE__,
( UPNP_INFO, MSERV, __FILE__, __LINE__,
"miniserver: Error" "miniserver: Error"
" in accepting connection\n" ); " in accepting connection\n" );
)
continue; continue;
} }
schedule_request_job( connectHnd, &clientAddr ); schedule_request_job( connectHnd, &clientAddr );
@ -489,24 +473,19 @@ RunMiniServer( MiniServerSockArray * miniSock )
&clientLen ); &clientLen );
if( byteReceived > 0 ) { if( byteReceived > 0 ) {
requestBuf[byteReceived] = '\0'; requestBuf[byteReceived] = '\0';
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_INFO, MSERV, __FILE__, __LINE__,
( UPNP_INFO, MSERV, __FILE__, __LINE__,
"Received response !!! %s From host %s \n", "Received response !!! %s From host %s \n",
requestBuf, requestBuf, inet_ntoa( clientAddr.sin_addr ) );
inet_ntoa( clientAddr.sin_addr ) ); UpnpPrintf( UPNP_PACKET, MSERV, __FILE__, __LINE__,
)
DBGONLY( UpnpPrintf
( UPNP_PACKET, MSERV, __FILE__, __LINE__,
"Received multicast packet: \n %s\n", "Received multicast packet: \n %s\n",
requestBuf ); requestBuf );
)
if( NULL != strstr( requestBuf, "ShutDown" ) ) if( NULL != strstr( requestBuf, "ShutDown" ) ) {
break; break;
} }
} }
} }
}
} }
shutdown( miniServSock, SD_BOTH ); shutdown( miniServSock, SD_BOTH );
@ -555,10 +534,8 @@ get_port( int sockfd )
} }
port = ntohs( sockinfo.sin_port ); port = ntohs( sockinfo.sin_port );
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_INFO, MSERV, __FILE__, __LINE__,
( UPNP_INFO, MSERV, __FILE__, __LINE__,
"sockfd = %d, .... port = %d\n", sockfd, port ); "sockfd = %d, .... port = %d\n", sockfd, port );
)
return port; return port;
} }
@ -623,16 +600,10 @@ get_miniserver_sockets( MiniServerSockArray * out,
//THIS MAY CAUSE TCP TO BECOME LESS RELIABLE //THIS MAY CAUSE TCP TO BECOME LESS RELIABLE
//HOWEVER IT HAS BEEN SUGESTED FOR TCP SERVERS //HOWEVER IT HAS BEEN SUGESTED FOR TCP SERVERS
DBGONLY( UpnpPrintf( UPNP_INFO, MSERV, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, MSERV, __FILE__, __LINE__,
"mserv start: resuseaddr set\n" ); "mserv start: resuseaddr set\n" );
) sockError = setsockopt( listenfd, SOL_SOCKET, SO_REUSEADDR,
( const char * )&reuseaddr_on, sizeof( int ));
sockError = setsockopt( listenfd,
SOL_SOCKET,
SO_REUSEADDR,
( const char * )&reuseaddr_on,
sizeof( int )
);
if( sockError == UPNP_SOCKETERROR ) { if( sockError == UPNP_SOCKETERROR ) {
shutdown( listenfd, SD_BOTH ); shutdown( listenfd, SD_BOTH );
UpnpCloseSocket( listenfd ); UpnpCloseSocket( listenfd );
@ -665,16 +636,14 @@ get_miniserver_sockets( MiniServerSockArray * out,
} }
if( sockError == UPNP_SOCKETERROR ) { if( sockError == UPNP_SOCKETERROR ) {
DBGONLY( perror( "mserv start: bind failed" ); perror( "mserv start: bind failed" );
)
shutdown( listenfd, SD_BOTH ); shutdown( listenfd, SD_BOTH );
UpnpCloseSocket( listenfd ); UpnpCloseSocket( listenfd );
return UPNP_E_SOCKET_BIND; // bind failed return UPNP_E_SOCKET_BIND; // bind failed
} }
DBGONLY( UpnpPrintf( UPNP_INFO, MSERV, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, MSERV, __FILE__, __LINE__,
"mserv start: bind success\n" ); "mserv start: bind success\n" );
)
success = listen( listenfd, SOMAXCONN ); success = listen( listenfd, SOMAXCONN );
if( success == UPNP_SOCKETERROR ) { if( success == UPNP_SOCKETERROR ) {
@ -694,10 +663,9 @@ get_miniserver_sockets( MiniServerSockArray * out,
if( ( miniServerStopSock = socket( AF_INET, SOCK_DGRAM, 0 ) ) == if( ( miniServerStopSock = socket( AF_INET, SOCK_DGRAM, 0 ) ) ==
UPNP_INVALID_SOCKET ) { UPNP_INVALID_SOCKET ) {
DBGONLY( UpnpPrintf( UPNP_CRITICAL, UpnpPrintf( UPNP_CRITICAL,
MSERV, __FILE__, __LINE__, MSERV, __FILE__, __LINE__,
"Error in socket operation !!!\n" ); "Error in socket operation !!!\n" );
)
shutdown( listenfd, SD_BOTH ); shutdown( listenfd, SD_BOTH );
UpnpCloseSocket( listenfd ); UpnpCloseSocket( listenfd );
return UPNP_E_OUTOF_SOCKET; return UPNP_E_OUTOF_SOCKET;
@ -711,10 +679,9 @@ get_miniserver_sockets( MiniServerSockArray * out,
if( bind( miniServerStopSock, ( struct sockaddr * )&serverAddr, if( bind( miniServerStopSock, ( struct sockaddr * )&serverAddr,
sizeof( serverAddr ) ) == UPNP_SOCKETERROR ) { sizeof( serverAddr ) ) == UPNP_SOCKETERROR ) {
DBGONLY( UpnpPrintf( UPNP_CRITICAL, UpnpPrintf( UPNP_CRITICAL,
MSERV, __FILE__, __LINE__, MSERV, __FILE__, __LINE__,
"Error in binding localhost!!!\n" ); "Error in binding localhost!!!\n" );
)
shutdown( listenfd, SD_BOTH ); shutdown( listenfd, SD_BOTH );
UpnpCloseSocket( listenfd ); UpnpCloseSocket( listenfd );
shutdown( miniServerStopSock, SD_BOTH ); shutdown( miniServerStopSock, SD_BOTH );
@ -877,10 +844,8 @@ StopMiniServer( void )
sock = socket( AF_INET, SOCK_DGRAM, 0 ); sock = socket( AF_INET, SOCK_DGRAM, 0 );
if( sock == UPNP_INVALID_SOCKET ) { if( sock == UPNP_INVALID_SOCKET ) {
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__,
( UPNP_INFO, SSDP, __FILE__, __LINE__,
"SSDP_SERVER:StopSSDPServer: Error in socket operation !!!\n" ); "SSDP_SERVER:StopSSDPServer: Error in socket operation !!!\n" );
)
return 0; return 0;
} }

View File

@ -101,7 +101,7 @@ str_int_entry Http_Header_Names[NUM_HTTP_HEADER_NAMES] = {
/***********************************************************************/ /***********************************************************************/
/************* scanner **************/ /************* scanner *************/
/***********************************************************************/ /***********************************************************************/
@ -562,7 +562,7 @@ httpmsg_find_hdr_str( IN http_message_t * msg,
* *
* Description : Finds header from a list, with the given 'name_id'. * Description : Finds header from a list, with the given 'name_id'.
* *
* Return : http_header_t* - Pointer to a header on success; * * Return : http_header_t* - Pointer to a header on success;
* NULL on failure * NULL on failure
* *
* Note : * Note :
@ -979,8 +979,8 @@ skip_to_end_of_header( INOUT scanner_t * scanner )
* Parameters: * Parameters:
* INOUT scanner_t* scanner ; Scanner Object * INOUT scanner_t* scanner ; Scanner Object
* IN char c ; Character to be compared with * IN char c ; Character to be compared with
* IN xboolean case_sensitive; Flag indicating whether comparison should * IN xboolean case_sensitive; Flag indicating whether
* be case sensitive * comparison should be case sensitive
* *
* Description: Compares a character to the next char in the scanner; * Description: Compares a character to the next char in the scanner;
* on error, scanner chars are not restored * on error, scanner chars are not restored
@ -2020,9 +2020,8 @@ parser_parse_chunky_entity( INOUT http_parser_t * parser )
status = match( scanner, "%x%L%c", &parser->chunk_size, &dummy ); status = match( scanner, "%x%L%c", &parser->chunk_size, &dummy );
if( status != PARSE_OK ) { if( status != PARSE_OK ) {
scanner->cursor = save_pos; scanner->cursor = save_pos;
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
( UPNP_INFO, HTTP, __FILE__, __LINE__, "CHUNK COULD NOT BE PARSED\n" );
"CHUNK COULD NOT BE PARSED\n" ); )
return status; return status;
} }
// remove chunk info just matched; just retain data // remove chunk info just matched; just retain data
@ -2149,9 +2148,8 @@ parser_get_entity_read_method( INOUT http_parser_t * parser )
if( raw_find_str( &hdr_value, "chunked" ) >= 0 ) { if( raw_find_str( &hdr_value, "chunked" ) >= 0 ) {
// read method to use chunked transfer encoding // read method to use chunked transfer encoding
parser->ent_position = ENTREAD_USING_CHUNKED; parser->ent_position = ENTREAD_USING_CHUNKED;
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
( UPNP_INFO, HTTP, __FILE__, __LINE__, "Found Chunked Encoding ....\n" );
"Found Chunked Encoding ....\n" ); )
return PARSE_CONTINUE_1; return PARSE_CONTINUE_1;
} }
@ -2470,7 +2468,7 @@ raw_find_str( IN memptr *raw_value,
* nameConverts a http_method id stored in the HTTP Method * nameConverts a http_method id stored in the HTTP Method
* *
* Returns: * Returns:
* const char* ptr - Ptr to the HTTP Method * * const char* ptr - Ptr to the HTTP Method
************************************************************************/ ************************************************************************/
const char * const char *
method_to_str( IN http_method_t method ) method_to_str( IN http_method_t method )
@ -2495,40 +2493,38 @@ method_to_str( IN http_method_t method )
* Returns: * Returns:
* void * void
************************************************************************/ ************************************************************************/
#ifdef DEBUG
void void
print_http_headers( http_message_t * hmsg ) print_http_headers( http_message_t * hmsg )
{ {
ListNode *node; ListNode *node;
// NNS: dlist_node *node; // NNS: dlist_node *node;
http_header_t *header; http_header_t *header;
// print start line // print start line
if( hmsg->is_request ) { if( hmsg->is_request ) {
//printf( "method = %d, version = %d.%d, url = %.*s\n", printf( "method = %d, version = %d.%d, url = %.*s\n",
// hmsg->method, hmsg->major_version, hmsg->minor_version, hmsg->method, hmsg->major_version, hmsg->minor_version,
// hmsg->uri.pathquery.size, hmsg->uri.pathquery.buff); hmsg->uri.pathquery.size, hmsg->uri.pathquery.buff);
} else { } else {
// printf( "resp status = %d, version = %d.%d, status msg = %.*s\n", printf( "resp status = %d, version = %d.%d, status msg = %.*s\n",
// hmsg->status_code, hmsg->major_version, hmsg->minor_version, hmsg->status_code, hmsg->major_version, hmsg->minor_version,
// (int)hmsg->status_msg.length, hmsg->status_msg.buf); (int)hmsg->status_msg.length, hmsg->status_msg.buf);
} }
// print headers // print headers
node = ListHead( &hmsg->headers ); node = ListHead( &hmsg->headers );
// NNS: node = dlist_first_node( &hmsg->headers ); // NNS: node = dlist_first_node( &hmsg->headers );
while( node != NULL ) { while( node != NULL ) {
header = ( http_header_t * ) node->item; header = ( http_header_t * ) node->item;
// NNS: header = (http_header_t *)node->data; // NNS: header = (http_header_t *)node->data;
//printf( "hdr name: %.*s, value: %.*s\n", printf( "hdr name: %.*s, value: %.*s\n",
// (int)header->name.length, header->name.buf, (int)header->name.length, header->name.buf,
// (int)header->value.length, header->value.buf ); (int)header->value.length, header->value.buf );
node = ListNext( &hmsg->headers, node ); node = ListNext( &hmsg->headers, node );
// NNS: node = dlist_next( &hmsg->headers, node ); // NNS: node = dlist_next( &hmsg->headers, node );
} }
} }
#endif

View File

@ -169,10 +169,8 @@ http_Connect( IN uri_type * destination_url,
if( connect( connfd, ( struct sockaddr * )&url->hostport.IPv4address, if( connect( connfd, ( struct sockaddr * )&url->hostport.IPv4address,
sizeof( struct sockaddr_in ) ) == -1 ) { sizeof( struct sockaddr_in ) ) == -1 ) {
#ifdef WIN32 #ifdef WIN32
DBGONLY(
UpnpPrintf(UPNP_CRITICAL, HTTP, __FILE__, __LINE__, UpnpPrintf(UPNP_CRITICAL, HTTP, __FILE__, __LINE__,
"connect error: %d\n", WSAGetLastError()); "connect error: %d\n", WSAGetLastError());
)
#endif #endif
shutdown( connfd, SD_BOTH ); shutdown( connfd, SD_BOTH );
UpnpCloseSocket( connfd ); UpnpCloseSocket( connfd );
@ -226,12 +224,10 @@ http_RecvMessage( IN SOCKINFO * info,
status = parser_append( parser, buf, num_read ); status = parser_append( parser, buf, num_read );
if( status == PARSE_SUCCESS ) { if( status == PARSE_SUCCESS ) {
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
( UPNP_INFO, HTTP, __FILE__, __LINE__,
"<<< (RECVD) <<<\n%s\n-----------------\n", "<<< (RECVD) <<<\n%s\n-----------------\n",
parser->msg.msg.buf ); parser->msg.msg.buf );
//print_http_headers( &parser->msg ); print_http_headers( &parser->msg );
)
if( parser->content_length > if( parser->content_length >
( unsigned int )g_maxContentLength ) { ( unsigned int )g_maxContentLength ) {
@ -252,12 +248,10 @@ http_RecvMessage( IN SOCKINFO * info,
} }
} else if( num_read == 0 ) { } else if( num_read == 0 ) {
if( ok_on_close ) { if( ok_on_close ) {
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
( UPNP_INFO, HTTP, __FILE__, __LINE__,
"<<< (RECVD) <<<\n%s\n-----------------\n", "<<< (RECVD) <<<\n%s\n-----------------\n",
parser->msg.msg.buf ); parser->msg.msg.buf );
//print_http_headers( &parser->msg ); print_http_headers( &parser->msg );
)
return 0; return 0;
} else { } else {
@ -455,11 +449,9 @@ http_SendMessage( IN SOCKINFO * info,
num_written = sock_write( info, file_buf, num_read, num_written = sock_write( info, file_buf, num_read,
TimeOut ); TimeOut );
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
( UPNP_INFO, HTTP, __FILE__, __LINE__,
">>> (SENT) >>>\n%.*s\n------------\n", ">>> (SENT) >>>\n%.*s\n------------\n",
( int )num_written, file_buf ); ( int )num_written, file_buf );
)
//Send error nothing we can do //Send error nothing we can do
if( num_written != num_read ) { if( num_written != num_read ) {
@ -485,10 +477,9 @@ http_SendMessage( IN SOCKINFO * info,
num_written = sock_write( info, buf, buf_length, TimeOut ); num_written = sock_write( info, buf, buf_length, TimeOut );
if( ( size_t ) num_written != buf_length ) if( ( size_t ) num_written != buf_length )
goto end; goto end;
DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
">>> (SENT) >>>\n%.*s\n------------\n", ">>> (SENT) >>>\n%.*s\n------------\n",
( int )buf_length, buf ); ( int )buf_length, buf );
)
} }
} }
} }
@ -589,7 +580,6 @@ http_RequestAndResponse( IN uri_type * destination,
* UPNP_E_SUCCESS; * UPNP_E_SUCCESS;
* UPNP_E_INVALID_URL; * UPNP_E_INVALID_URL;
* *
*
* Note : * Note :
************************************************************************/ ************************************************************************/
int int
@ -601,10 +591,10 @@ http_Download( IN const char *url_str,
{ {
int ret_code; int ret_code;
uri_type url; uri_type url;
char *msg_start, char *msg_start;
*entity_start, char *entity_start;
*hoststr, char *hoststr;
*temp; char *temp;
http_parser_t response; http_parser_t response;
size_t msg_length; size_t msg_length;
size_t hostlen; size_t hostlen;
@ -614,10 +604,8 @@ http_Download( IN const char *url_str,
char *urlPath = alloca( strlen( url_str ) + 1 ); char *urlPath = alloca( strlen( url_str ) + 1 );
//ret_code = parse_uri( (char*)url_str, strlen(url_str), &url ); //ret_code = parse_uri( (char*)url_str, strlen(url_str), &url );
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__, "DOWNLOAD URL : %s\n",
( UPNP_INFO, HTTP, __FILE__, __LINE__, "DOWNLOAD URL : %s\n",
url_str ); url_str );
)
ret_code = ret_code =
http_FixStrUrl( ( char * )url_str, strlen( url_str ), &url ); http_FixStrUrl( ( char * )url_str, strlen( url_str ), &url );
if( ret_code != UPNP_E_SUCCESS ) { if( ret_code != UPNP_E_SUCCESS ) {
@ -641,10 +629,8 @@ http_Download( IN const char *url_str,
*temp = '\0'; *temp = '\0';
hostlen = strlen( hoststr ); hostlen = strlen( hoststr );
*temp = '/'; *temp = '/';
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
( UPNP_INFO, HTTP, __FILE__, __LINE__,
"HOSTNAME : %s Length : %"PRIzu"\n", hoststr, hostlen ); "HOSTNAME : %s Length : %"PRIzu"\n", hoststr, hostlen );
)
ret_code = http_MakeMessage( ret_code = http_MakeMessage(
&request, 1, 1, &request, 1, 1,
@ -653,18 +639,14 @@ http_Download( IN const char *url_str,
"HOST: ", "HOST: ",
hoststr, hostlen ); hoststr, hostlen );
if( ret_code != 0 ) { if( ret_code != 0 ) {
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
( UPNP_INFO, HTTP, __FILE__, __LINE__,
"HTTP Makemessage failed\n" ); "HTTP Makemessage failed\n" );
)
membuffer_destroy( &request ); membuffer_destroy( &request );
return ret_code; return ret_code;
} }
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
( UPNP_INFO, HTTP, __FILE__, __LINE__,
"HTTP Buffer:\n %s\n----------END--------\n", request.buf ); "HTTP Buffer:\n %s\n----------END--------\n", request.buf );
)
// get doc msg // get doc msg
ret_code = ret_code =
http_RequestAndResponse( &url, request.buf, request.length, http_RequestAndResponse( &url, request.buf, request.length,
@ -676,11 +658,8 @@ http_Download( IN const char *url_str,
return ret_code; return ret_code;
} }
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__, "Response\n" );
( UPNP_INFO, HTTP, __FILE__, __LINE__, "Response\n" ); print_http_headers( &response.msg );
)
DBGONLY( print_http_headers( &response.msg );
)
// optional content-type // optional content-type
if( content_type ) { if( content_type ) {
@ -771,13 +750,10 @@ MakePostMessage( const char *url_str,
char *hoststr, char *hoststr,
*temp; *temp;
DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"DOWNLOAD URL : %s\n", url_str ); "DOWNLOAD URL : %s\n", url_str );
)
ret_code = ret_code =
http_FixStrUrl( ( char * )url_str, strlen( url_str ), url ); http_FixStrUrl( ( char * )url_str, strlen( url_str ), url );
if( ret_code != UPNP_E_SUCCESS ) { if( ret_code != UPNP_E_SUCCESS ) {
return ret_code; return ret_code;
} }
@ -799,9 +775,8 @@ MakePostMessage( const char *url_str,
*temp = '\0'; *temp = '\0';
hostlen = strlen( hoststr ); hostlen = strlen( hoststr );
*temp = '/'; *temp = '/';
DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"HOSTNAME : %s Length : %"PRIzu"\n", hoststr, hostlen ); "HOSTNAME : %s Length : %"PRIzu"\n", hoststr, hostlen );
)
if( contentLength >= 0 ) { if( contentLength >= 0 ) {
ret_code = http_MakeMessage( ret_code = http_MakeMessage(
@ -833,17 +808,16 @@ MakePostMessage( const char *url_str,
} }
if( ret_code != 0 ) { if( ret_code != 0 ) {
DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"HTTP Makemessage failed\n" ); "HTTP Makemessage failed\n" );
)
membuffer_destroy( request ); membuffer_destroy( request );
return ret_code; return ret_code;
} }
DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"HTTP Buffer:\n %s\n" "----------END--------\n", "HTTP Buffer:\n %s\n" "----------END--------\n",
request->buf ); request->buf );
)
return UPNP_E_SUCCESS; return UPNP_E_SUCCESS;
} }
@ -1108,9 +1082,8 @@ MakeGetMessage( const char *url_str,
char *hoststr, char *hoststr,
*temp; *temp;
DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"DOWNLOAD URL : %s\n", url_str ); "DOWNLOAD URL : %s\n", url_str );
)
ret_code = ret_code =
http_FixStrUrl( ( char * )url_str, strlen( url_str ), url ); http_FixStrUrl( ( char * )url_str, strlen( url_str ), url );
@ -1136,9 +1109,8 @@ MakeGetMessage( const char *url_str,
*temp = '\0'; *temp = '\0';
hostlen = strlen( hoststr ); hostlen = strlen( hoststr );
*temp = '/'; *temp = '/';
DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"HOSTNAME : %s Length : %"PRIzu"\n", hoststr, hostlen ); "HOSTNAME : %s Length : %"PRIzu"\n", hoststr, hostlen );
)
if( proxy_str ) { if( proxy_str ) {
querystr = url_str; querystr = url_str;
@ -1156,17 +1128,16 @@ MakeGetMessage( const char *url_str,
hoststr, hostlen ); hoststr, hostlen );
if( ret_code != 0 ) { if( ret_code != 0 ) {
DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"HTTP Makemessage failed\n" ); "HTTP Makemessage failed\n" );
)
membuffer_destroy( request ); membuffer_destroy( request );
return ret_code; return ret_code;
} }
DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"HTTP Buffer:\n %s\n" "----------END--------\n", "HTTP Buffer:\n %s\n" "----------END--------\n",
request->buf ); request->buf );
)
return UPNP_E_SUCCESS; return UPNP_E_SUCCESS;
} }
@ -1386,11 +1357,9 @@ http_ReadHttpGet( IN void *Handle,
} }
} else if( num_read == 0 ) { } else if( num_read == 0 ) {
if( ok_on_close ) { if( ok_on_close ) {
DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"<<< (RECVD) <<<\n%s\n-----------------\n", "<<< (RECVD) <<<\n%s\n-----------------\n",
handle->response.msg.msg.buf ); handle->response.msg.msg.buf );
//print_http_headers( &parser->msg );
)
handle->response.position = POS_COMPLETE; handle->response.position = POS_COMPLETE;
} else { } else {
// partial msg // partial msg
@ -1850,31 +1819,26 @@ http_MakeMessage( INOUT membuffer * buf,
va_start( argp, fmt ); va_start( argp, fmt );
while( ( c = *fmt++ ) != 0 ) { while( ( c = *fmt++ ) != 0 ) {
if( c == 's' ) {
if( c == 's' ) // C string // C string
{
s = ( char * )va_arg( argp, char * ); s = ( char * )va_arg( argp, char * );
assert( s ); assert( s );
UpnpPrintf(UPNP_ALL,HTTP,__FILE__,__LINE__,"Adding a string : %s\n", s);
//DBGONLY(UpnpPrintf(UPNP_ALL,HTTP,__FILE__,__LINE__,"Adding a string : %s\n", s);)
if( membuffer_append( buf, s, strlen( s ) ) != 0 ) { if( membuffer_append( buf, s, strlen( s ) ) != 0 ) {
goto error_handler; goto error_handler;
} }
} else if( c == 'K' ) // Add Chunky header } else if( c == 'K' ) {
{ // Add Chunky header
if( membuffer_append if( membuffer_append
( buf, "TRANSFER-ENCODING: chunked\r\n", ( buf, "TRANSFER-ENCODING: chunked\r\n",
strlen( "Transfer-Encoding: chunked\r\n" ) ) != 0 ) { strlen( "Transfer-Encoding: chunked\r\n" ) ) != 0 ) {
goto error_handler; goto error_handler;
} }
} else if( c == 'G' ) // Add Range header } else if( c == 'G' ) {
{ // Add Range header
struct SendInstruction *RespInstr; struct SendInstruction *RespInstr;
RespInstr = RespInstr = (struct SendInstruction *)
( struct SendInstruction * )va_arg( argp, va_arg( argp, struct SendInstruction *);
struct SendInstruction
* );
assert( RespInstr ); assert( RespInstr );
// connection header // connection header
if( membuffer_append if( membuffer_append
@ -1882,38 +1846,34 @@ http_MakeMessage( INOUT membuffer * buf,
strlen( RespInstr->RangeHeader ) ) != 0 ) { strlen( RespInstr->RangeHeader ) ) != 0 ) {
goto error_handler; goto error_handler;
} }
} else if( c == 'b' ) {
} else if( c == 'b' ) // mem buffer // mem buffer
{
s = ( char * )va_arg( argp, char * ); s = ( char * )va_arg( argp, char * );
//DBGONLY(UpnpPrintf(UPNP_ALL,HTTP,__FILE__,__LINE__,"Adding a char Buffer starting with: %c\n", s[0]);) UpnpPrintf(UPNP_ALL,HTTP,__FILE__,__LINE__,
"Adding a char Buffer starting with: %c\n", s[0]);
assert( s ); assert( s );
length = ( size_t ) va_arg( argp, size_t ); length = ( size_t ) va_arg( argp, size_t );
if( membuffer_append( buf, s, length ) != 0 ) { if( membuffer_append( buf, s, length ) != 0 ) {
goto error_handler; goto error_handler;
} }
} }
else if( c == 'c' ) {
else if( c == 'c' ) // crlf // crlf
{
if( membuffer_append( buf, "\r\n", 2 ) != 0 ) { if( membuffer_append( buf, "\r\n", 2 ) != 0 ) {
goto error_handler; goto error_handler;
} }
} }
else if( c == 'd' ) {
else if( c == 'd' ) // integer // integer
{
num = ( int )va_arg( argp, int ); num = ( int )va_arg( argp, int );
sprintf( tempbuf, "%"PRIzu, num ); sprintf( tempbuf, "%"PRIzu, num );
if( membuffer_append( buf, tempbuf, strlen( tempbuf ) ) != 0 ) { if( membuffer_append( buf, tempbuf, strlen( tempbuf ) ) != 0 ) {
goto error_handler; goto error_handler;
} }
} }
else if( c == 'h' ) {
else if( c == 'h' ) // off_t // off_t
{
bignum = ( off_t )va_arg( argp, off_t ); bignum = ( off_t )va_arg( argp, off_t );
sprintf( tempbuf, "%"PRId64, (int64_t)bignum ); sprintf( tempbuf, "%"PRId64, (int64_t)bignum );
@ -1921,9 +1881,8 @@ http_MakeMessage( INOUT membuffer * buf,
goto error_handler; goto error_handler;
} }
} }
else if( c == 't' || c == 'D' ) {
else if( c == 't' || c == 'D' ) // date // date
{
if( c == 'D' ) { if( c == 'D' ) {
// header // header
start_str = "DATE: "; start_str = "DATE: ";
@ -1947,9 +1906,7 @@ http_MakeMessage( INOUT membuffer * buf,
if( membuffer_append( buf, tempbuf, strlen( tempbuf ) ) != 0 ) { if( membuffer_append( buf, tempbuf, strlen( tempbuf ) ) != 0 ) {
goto error_handler; goto error_handler;
} }
} } else if( c == 'C' ) {
else if( c == 'C' ) {
if( ( http_major_version > 1 ) || if( ( http_major_version > 1 ) ||
( http_major_version == 1 && http_minor_version == 1 ) ( http_major_version == 1 && http_minor_version == 1 )
) { ) {
@ -1959,9 +1916,7 @@ http_MakeMessage( INOUT membuffer * buf,
goto error_handler; goto error_handler;
} }
} }
} } else if( c == 'N' ) {
else if( c == 'N' ) {
// content-length header // content-length header
bignum = ( off_t )va_arg( argp, off_t ); bignum = ( off_t )va_arg( argp, off_t );
@ -1972,11 +1927,8 @@ http_MakeMessage( INOUT membuffer * buf,
"CONTENT-LENGTH: ", bignum ) != 0 ) { "CONTENT-LENGTH: ", bignum ) != 0 ) {
goto error_handler; goto error_handler;
} }
} } else if( c == 'S' || c == 'U' ) {
else if( c == 'S' || c == 'U' ) {
// SERVER or USER-AGENT header // SERVER or USER-AGENT header
temp_str = ( c == 'S' ) ? "SERVER: " : "USER-AGENT: "; temp_str = ( c == 'S' ) ? "SERVER: " : "USER-AGENT: ";
get_sdk_info( tempbuf ); get_sdk_info( tempbuf );
if (http_MakeMessage( if (http_MakeMessage(
@ -1985,34 +1937,25 @@ http_MakeMessage( INOUT membuffer * buf,
temp_str, tempbuf ) != 0 ) { temp_str, tempbuf ) != 0 ) {
goto error_handler; goto error_handler;
} }
} } else if( c == 'X' ) {
// C string
else if( c == 'X' ) // C string
{
s = ( char * )va_arg( argp, char * ); s = ( char * )va_arg( argp, char * );
assert( s ); assert( s );
if( membuffer_append_str( buf, "X-User-Agent: ") != 0 ) { if( membuffer_append_str( buf, "X-User-Agent: ") != 0 ) {
goto error_handler; goto error_handler;
} }
if( membuffer_append( buf, s, strlen( s ) ) != 0 ) { if( membuffer_append( buf, s, strlen( s ) ) != 0 ) {
goto error_handler; goto error_handler;
} }
} } else if( c == 'R' ) {
else if( c == 'R' ) {
// response start line // response start line
// e.g.: 'HTTP/1.1 200 OK' // e.g.: 'HTTP/1.1 200 OK'
// //
// code // code
status_code = ( int )va_arg( argp, int ); status_code = ( int )va_arg( argp, int );
assert( status_code > 0 ); assert( status_code > 0 );
sprintf( tempbuf, "HTTP/%d.%d %d ", sprintf( tempbuf, "HTTP/%d.%d %d ",
http_major_version, http_minor_version, status_code ); http_major_version, http_minor_version, status_code );
// str // str
status_msg = http_get_code_text( status_code ); status_msg = http_get_code_text( status_code );
if (http_MakeMessage( if (http_MakeMessage(
@ -2022,40 +1965,31 @@ http_MakeMessage( INOUT membuffer * buf,
status_msg ) != 0 ) { status_msg ) != 0 ) {
goto error_handler; goto error_handler;
} }
} } else if( c == 'B' ) {
else if( c == 'B' ) {
// body of a simple reply // body of a simple reply
// //
status_code = ( int )va_arg( argp, int ); status_code = ( int )va_arg( argp, int );
sprintf( tempbuf, "%s%d %s%s", sprintf( tempbuf, "%s%d %s%s",
"<html><body><h1>", "<html><body><h1>",
status_code, http_get_code_text( status_code ), status_code, http_get_code_text( status_code ),
"</h1></body></html>" ); "</h1></body></html>" );
bignum = strlen( tempbuf ); bignum = strlen( tempbuf );
if (http_MakeMessage( if (http_MakeMessage(
buf, http_major_version, http_minor_version, buf, http_major_version, http_minor_version,
"NTcs", "NTcs",
bignum, // content-length bignum, // content-length
"text/html", // content-type "text/html", // content-type
tempbuf ) != 0 ) // body tempbuf ) != 0 // body
{ ) {
goto error_handler; goto error_handler;
} }
} } else if( c == 'Q' ) {
else if( c == 'Q' ) {
// request start line // request start line
// GET /foo/bar.html HTTP/1.1\r\n // GET /foo/bar.html HTTP/1.1\r\n
method = ( http_method_t ) va_arg( argp, http_method_t ); method = ( http_method_t ) va_arg( argp, http_method_t );
method_str = method_to_str( method ); method_str = method_to_str( method );
url_str = ( const char * )va_arg( argp, const char * ); url_str = ( const char * )va_arg( argp, const char * );
num = ( size_t )va_arg( argp, size_t ); // length of url_str num = ( size_t )va_arg( argp, size_t ); // length of url_str
if (http_MakeMessage( if (http_MakeMessage(
buf, http_major_version, http_minor_version, buf, http_major_version, http_minor_version,
"ssbsdsdc", "ssbsdsdc",
@ -2064,20 +1998,15 @@ http_MakeMessage( INOUT membuffer * buf,
" HTTP/", http_major_version, ".", http_minor_version ) != 0 ) { " HTTP/", http_major_version, ".", http_minor_version ) != 0 ) {
goto error_handler; goto error_handler;
} }
} } else if( c == 'q' ) {
else if( c == 'q' ) {
// request start line and HOST header // request start line and HOST header
method = ( http_method_t ) va_arg( argp, http_method_t ); method = ( http_method_t ) va_arg( argp, http_method_t );
uri_ptr = ( uri_type * ) va_arg( argp, uri_type * ); uri_ptr = ( uri_type * ) va_arg( argp, uri_type * );
assert( uri_ptr ); assert( uri_ptr );
if( http_FixUrl( uri_ptr, &url ) != 0 ) { if( http_FixUrl( uri_ptr, &url ) != 0 ) {
error_code = UPNP_E_INVALID_URL; error_code = UPNP_E_INVALID_URL;
goto error_handler; goto error_handler;
} }
if (http_MakeMessage( if (http_MakeMessage(
buf, http_major_version, http_minor_version, buf, http_major_version, http_minor_version,
"Q" "sbc", "Q" "sbc",
@ -2085,21 +2014,16 @@ http_MakeMessage( INOUT membuffer * buf,
"HOST: ", url.hostport.text.buff, url.hostport.text.size ) != 0 ) { "HOST: ", url.hostport.text.buff, url.hostport.text.size ) != 0 ) {
goto error_handler; goto error_handler;
} }
} } else if( c == 'T' ) {
else if( c == 'T' ) {
// content type header // content type header
temp_str = ( const char * )va_arg( argp, const char * ); // type/subtype format temp_str = ( const char * )va_arg( argp, const char * ); // type/subtype format
if (http_MakeMessage( if (http_MakeMessage(
buf, http_major_version, http_minor_version, buf, http_major_version, http_minor_version,
"ssc", "ssc",
"CONTENT-TYPE: ", temp_str ) != 0 ) { "CONTENT-TYPE: ", temp_str ) != 0 ) {
goto error_handler; goto error_handler;
} }
} } else {
else {
assert( 0 ); assert( 0 );
} }
} }
@ -2174,18 +2098,15 @@ MakeGetMessageEx( const char *url_str,
*temp; *temp;
do { do {
DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"DOWNLOAD URL : %s\n", url_str ); "DOWNLOAD URL : %s\n", url_str );
)
if( ( errCode = http_FixStrUrl( ( char * )url_str, if( ( errCode = http_FixStrUrl( ( char * )url_str,
strlen( url_str ), strlen( url_str ), url ) ) != UPNP_E_SUCCESS ) {
url ) ) != UPNP_E_SUCCESS ) {
break; break;
} }
// make msg // make msg
membuffer_init( request ); membuffer_init( request );
urlPath = alloca( strlen( url_str ) + 1 ); urlPath = alloca( strlen( url_str ) + 1 );
if( !urlPath ) { if( !urlPath ) {
errCode = UPNP_E_OUTOF_MEMORY; errCode = UPNP_E_OUTOF_MEMORY;
@ -2193,9 +2114,7 @@ MakeGetMessageEx( const char *url_str,
} }
memset( urlPath, 0, strlen( url_str ) + 1 ); memset( urlPath, 0, strlen( url_str ) + 1 );
strcpy( urlPath, url_str ); strcpy( urlPath, url_str );
hoststr = strstr( urlPath, "//" ); hoststr = strstr( urlPath, "//" );
if( hoststr == NULL ) { if( hoststr == NULL ) {
errCode = UPNP_E_INVALID_URL; errCode = UPNP_E_INVALID_URL;
@ -2212,11 +2131,9 @@ MakeGetMessageEx( const char *url_str,
*temp = '\0'; *temp = '\0';
hostlen = strlen( hoststr ); hostlen = strlen( hoststr );
*temp = '/'; *temp = '/';
UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"HOSTNAME : %s Length : %"PRIzu"\n", "HOSTNAME : %s Length : %"PRIzu"\n",
hoststr, hostlen ); hoststr, hostlen );
)
errCode = http_MakeMessage( errCode = http_MakeMessage(
request, 1, 1, request, 1, 1,
@ -2227,18 +2144,17 @@ MakeGetMessageEx( const char *url_str,
pRangeSpecifier ); pRangeSpecifier );
if( errCode != 0 ) { if( errCode != 0 ) {
DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"HTTP Makemessage failed\n" ); "HTTP Makemessage failed\n" );
)
membuffer_destroy( request ); membuffer_destroy( request );
return errCode; return errCode;
} }
} while( 0 ); } while( 0 );
DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"HTTP Buffer:\n %s\n" "----------END--------\n", "HTTP Buffer:\n %s\n" "----------END--------\n",
request->buf ); request->buf );
)
return errCode; return errCode;
} }

View File

@ -637,11 +637,11 @@ get_file_info( IN const char *filename,
rc = get_content_type( filename, &info->content_type ); rc = get_content_type( filename, &info->content_type );
DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"file info: %s, length: %lld, last_mod=%s readable=%d\n", "file info: %s, length: %lld, last_mod=%s readable=%d\n",
filename, (long long)info->file_length, filename, (long long)info->file_length,
asctime( gmtime( &info->last_modified ) ), asctime( gmtime( &info->last_modified ) ),
info->is_readable ); ) info->is_readable );
return rc; return rc;
} }
@ -1586,13 +1586,10 @@ http_RecvPostMessage( http_parser_t * parser,
} }
} else if( num_read == 0 ) { } else if( num_read == 0 ) {
if( ok_on_close ) { if( ok_on_close ) {
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
( UPNP_INFO, HTTP, __FILE__, __LINE__,
"<<< (RECVD) <<<\n%s\n-----------------\n", "<<< (RECVD) <<<\n%s\n-----------------\n",
parser->msg.msg.buf ); parser->msg.msg.buf );
//print_http_headers( &parser->msg ); print_http_headers( &parser->msg );
)
parser->position = POS_COMPLETE; parser->position = POS_COMPLETE;
} else { } else {
// partial msg // partial msg
@ -1760,9 +1757,8 @@ web_server_callback( IN http_parser_t * parser,
} }
} }
DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"webserver: request processed...\n" ); "webserver: request processed...\n" );
)
membuffer_destroy( &headers ); membuffer_destroy( &headers );
membuffer_destroy( &filename ); membuffer_destroy( &filename );

View File

@ -367,16 +367,20 @@ free_URL_list( URL_list * list )
* uri_type *in ; URI object * uri_type *in ; URI object
* *
* Description : Function useful in debugging for printing a parsed uri. * Description : Function useful in debugging for printing a parsed uri.
* Compiled out with DBGONLY macro.
* *
* Return : void ; * Return : void ;
* *
* Note : * Note :
************************************************************************/ ************************************************************************/
DBGONLY( void print_uri( uri_type * in ) { #ifdef DEBUG
void print_uri( uri_type *in )
{
print_token( &in->scheme ); print_token( &in->scheme );
print_token( &in->hostport.text ); print_token( &in->hostport.text );
print_token( &in->pathquery ); print_token( &in->fragment );} ) print_token( &in->pathquery );
print_token( &in->fragment );
}
#endif
/************************************************************************ /************************************************************************
* Function : print_token * Function : print_token
@ -385,20 +389,23 @@ DBGONLY( void print_uri( uri_type * in ) {
* token * in ; token * token * in ; token
* *
* Description : Function useful in debugging for printing a token. * Description : Function useful in debugging for printing a token.
* Compiled out with DBGONLY macro.
* *
* Return : void ; * Return : void ;
* *
* Note : * Note :
************************************************************************/ ************************************************************************/
DBGONLY( void print_token( token * in ) { #ifdef DEBUG
void print_token(token * in)
{
int i = 0; int i = 0;
printf( "Token Size : %"PRIzu"\n\'", in->size ); printf( "Token Size : %"PRIzu"\n\'", in->size );
for( i = 0; i < in->size; i++ ) { for( i = 0; i < in->size; i++ ) {
putchar( in->buff[i] );} putchar( in->buff[i] );
putchar( '\'' ); putchar( '\n' );} }
putchar( '\'' );
) putchar( '\n' );
}
#endif
/************************************************************************ /************************************************************************
* Function : token_string_casecmp * Function : token_string_casecmp
@ -417,8 +424,10 @@ DBGONLY( void print_token( token * in ) {
* *
* Note : * Note :
************************************************************************/ ************************************************************************/
int token_string_casecmp( token * in1, int token_string_casecmp(
char *in2 ) { token * in1,
char *in2 )
{
int in2_length = strlen( in2 ); int in2_length = strlen( in2 );
if( in1->size != in2_length ) if( in1->size != in2_length )
@ -790,9 +799,8 @@ remove_dots( char *in,
return UPNP_E_OUTOF_MEMORY; return UPNP_E_OUTOF_MEMORY;
Segments[0] = NULL; Segments[0] = NULL;
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
( UPNP_ALL, API, __FILE__, __LINE__, "REMOVE_DOTS: before: %s\n", in );
"REMOVE_DOTS: before: %s\n", in ) );
while( ( copyFrom < max ) && ( *copyFrom != '?' ) while( ( copyFrom < max ) && ( *copyFrom != '?' )
&& ( *copyFrom != '#' ) ) { && ( *copyFrom != '#' ) ) {
@ -837,9 +845,8 @@ remove_dots( char *in,
} }
( *copyTo ) = 0; ( *copyTo ) = 0;
free( Segments ); free( Segments );
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
( UPNP_ALL, API, __FILE__, __LINE__, "REMOVE_DOTS: after: %s\n", in );
"REMOVE_DOTS: after: %s\n", in ) );
return UPNP_E_SUCCESS; return UPNP_E_SUCCESS;
} }

View File

@ -443,31 +443,47 @@ FindServiceControlURLPath( service_table * table,
* *
* Note : * Note :
************************************************************************/ ************************************************************************/
DBGONLY( void printService( service_info * service, Dbg_Level level, #ifdef DEBUG
Dbg_Module module ) { void printService(
service_info *service,
Dbg_Level level,
Dbg_Module module )
{
if( service ) { if( service ) {
if( service->serviceType ) if( service->serviceType ) {
UpnpPrintf( level, module, __FILE__, __LINE__, UpnpPrintf( level, module, __FILE__, __LINE__,
"serviceType: %s\n", service->serviceType ); "serviceType: %s\n", service->serviceType );
if( service->serviceId ) }
UpnpPrintf( level, module, __FILE__, __LINE__, "serviceId: %s\n", if( service->serviceId ) {
service->serviceId ); if( service->SCPDURL ) UpnpPrintf( level, module, __FILE__, __LINE__,
UpnpPrintf( level, module, __FILE__, __LINE__, "SCPDURL: %s\n", "serviceId: %s\n", service->serviceId );
service->SCPDURL ); if( service->controlURL ) }
UpnpPrintf( level, module, __FILE__, __LINE__, "controlURL: %s\n", if( service->SCPDURL ) {
service->controlURL ); if( service->eventURL ) UpnpPrintf( level, module, __FILE__, __LINE__,
UpnpPrintf( level, module, __FILE__, __LINE__, "eventURL: %s\n", "SCPDURL: %s\n", service->SCPDURL );
service->eventURL ); if( service->UDN ) }
UpnpPrintf( level, module, __FILE__, __LINE__, "UDN: %s\n\n", if( service->controlURL ) {
service->UDN ); if( service->active ) UpnpPrintf( level, module, __FILE__, __LINE__,
"controlURL: %s\n", service->controlURL );
}
if( service->eventURL ) {
UpnpPrintf( level, module, __FILE__, __LINE__,
"eventURL: %s\n", service->eventURL );
}
if( service->UDN ) {
UpnpPrintf( level, module, __FILE__, __LINE__,
"UDN: %s\n\n", service->UDN );
}
if( service->active ) {
UpnpPrintf( level, module, __FILE__, __LINE__, UpnpPrintf( level, module, __FILE__, __LINE__,
"Service is active\n" ); "Service is active\n" );
else } else {
UpnpPrintf( level, module, __FILE__, __LINE__, UpnpPrintf( level, module, __FILE__, __LINE__,
"Service is inactive\n" );} "Service is inactive\n" );
} }
}
) }
#endif
/************************************************************************ /************************************************************************
* Function : printServiceList * Function : printServiceList
@ -484,36 +500,48 @@ DBGONLY( void printService( service_info * service, Dbg_Level level,
* *
* Note : * Note :
************************************************************************/ ************************************************************************/
DBGONLY( void printServiceList( service_info * service, #ifdef DEBUG
void printServiceList(
service_info * service,
Dbg_Level level, Dbg_Level level,
Dbg_Module module ) { Dbg_Module module )
{
while( service ) { while( service ) {
if( service->serviceType ) if( service->serviceType ) {
UpnpPrintf( level, module, __FILE__, __LINE__, UpnpPrintf( level, module, __FILE__, __LINE__,
"serviceType: %s\n", service->serviceType ); "serviceType: %s\n", service->serviceType );
if( service->serviceId ) }
if( service->serviceId ) {
UpnpPrintf( level, module, __FILE__, __LINE__, UpnpPrintf( level, module, __FILE__, __LINE__,
"serviceId: %s\n", service->serviceId ); "serviceId: %s\n", service->serviceId );
if( service->SCPDURL ) }
if( service->SCPDURL ) {
UpnpPrintf( level, module, __FILE__, __LINE__, UpnpPrintf( level, module, __FILE__, __LINE__,
"SCPDURL: %s\n", service->SCPDURL ); "SCPDURL: %s\n", service->SCPDURL );
if( service->controlURL ) }
if( service->controlURL ) {
UpnpPrintf( level, module, __FILE__, __LINE__, UpnpPrintf( level, module, __FILE__, __LINE__,
"controlURL: %s\n", service->controlURL ); "controlURL: %s\n", service->controlURL );
if( service->eventURL ) }
if( service->eventURL ) {
UpnpPrintf( level, module, __FILE__, __LINE__, UpnpPrintf( level, module, __FILE__, __LINE__,
"eventURL: %s\n", service->eventURL ); "eventURL: %s\n", service->eventURL );
if( service->UDN ) }
UpnpPrintf( level, module, __FILE__, __LINE__, "UDN: %s\n\n", if( service->UDN ) {
service->UDN ); if( service->active ) UpnpPrintf( level, module, __FILE__, __LINE__,
"UDN: %s\n\n", service->UDN );
}
if( service->active ) {
UpnpPrintf( level, module, __FILE__, __LINE__, UpnpPrintf( level, module, __FILE__, __LINE__,
"Service is active\n" ); "Service is active\n" );
else } else {
UpnpPrintf( level, module, __FILE__, __LINE__, UpnpPrintf( level, module, __FILE__, __LINE__,
"Service is inactive\n" ); "Service is inactive\n" );
service = service->next;}
} }
) service = service->next;
}
}
#endif
/************************************************************************ /************************************************************************
* Function : printServiceTable * Function : printServiceTable
@ -531,15 +559,18 @@ DBGONLY( void printService( service_info * service, Dbg_Level level,
* *
* Note : * Note :
************************************************************************/ ************************************************************************/
DBGONLY( void printServiceTable( service_table * table, #ifdef DEBUG
void printServiceTable(
service_table * table,
Dbg_Level level, Dbg_Level level,
Dbg_Module module ) { Dbg_Module module )
{
UpnpPrintf( level, module, __FILE__, __LINE__, UpnpPrintf( level, module, __FILE__, __LINE__,
"URL_BASE: %s\n", table->URLBase ); "URL_BASE: %s\n", table->URLBase );
UpnpPrintf( level, module, __FILE__, __LINE__, UpnpPrintf( level, module, __FILE__, __LINE__,
"Services: \n" ); "Services: \n" );
printServiceList( table->serviceList, level, module );} printServiceList( table->serviceList, level, module );}
) #endif
/************************************************************************ /************************************************************************
* Function : freeService * Function : freeService
@ -849,12 +880,10 @@ getServiceList( IXML_Node * node,
( ! ( !
( current->controlURL = ( current->controlURL =
resolve_rel_url( URLBase, tempDOMString ) ) ) ) { resolve_rel_url( URLBase, tempDOMString ) ) ) ) {
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__,
( UPNP_INFO, GENA, __FILE__, __LINE__, "BAD OR MISSING CONTROL URL" );
"BAD OR MISSING CONTROL URL" ) ); UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__,
DBGONLY( UpnpPrintf "CONTROL URL SET TO NULL IN SERVICE INFO" );
( UPNP_INFO, GENA, __FILE__, __LINE__,
"CONTROL URL SET TO NULL IN SERVICE INFO" ) );
current->controlURL = NULL; current->controlURL = NULL;
fail = 0; fail = 0;
} }
@ -870,12 +899,10 @@ getServiceList( IXML_Node * node,
( ! ( !
( current->eventURL = ( current->eventURL =
resolve_rel_url( URLBase, tempDOMString ) ) ) ) { resolve_rel_url( URLBase, tempDOMString ) ) ) ) {
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__,
( UPNP_INFO, GENA, __FILE__, __LINE__, "BAD OR MISSING EVENT URL" );
"BAD OR MISSING EVENT URL" ) ); UpnpPrintf( UPNP_INFO, GENA, __FILE__, __LINE__,
DBGONLY( UpnpPrintf "EVENT URL SET TO NULL IN SERVICE INFO" );
( UPNP_INFO, GENA, __FILE__, __LINE__,
"EVENT URL SET TO NULL IN SERVICE INFO" ) );
current->eventURL = NULL; current->eventURL = NULL;
fail = 0; fail = 0;
} }

View File

@ -304,27 +304,6 @@
/** @name DBGONLY
The {\bf DBGONLY} macro allows code to be marked so that it
is only included in the DEBUG build and not the release. To
use this macro, put the code inside of the parentheses:
{\tt DBGONLY(int i;)}
This will cause a declaration of the integer {\tt i} only
in the debug build.
*/
//@{
#ifdef DEBUG
# define DBGONLY(x) x
#else
# define DBGONLY(x)
#endif
//@}
#undef EXCLUDE_WEB_SERVER #undef EXCLUDE_WEB_SERVER
#undef EXCLUDE_MINISERVER #undef EXCLUDE_MINISERVER
#ifdef INTERNAL_WEB_SERVER #ifdef INTERNAL_WEB_SERVER
@ -368,4 +347,3 @@
//@} //@}
#endif #endif

View File

@ -89,22 +89,23 @@
#define DEFAULT_TIMEOUT 1801 #define DEFAULT_TIMEOUT 1801
extern ithread_mutex_t GlobalClientSubscribeMutex; extern ithread_mutex_t GlobalClientSubscribeMutex;
// Lock the subscription // Lock the subscription
#define SubscribeLock() \ #define SubscribeLock() \
DBGONLY(UpnpPrintf(UPNP_INFO,GENA,__FILE__,__LINE__, \ UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, \
"Trying Subscribe Lock")); \ "Trying Subscribe Lock"); \
ithread_mutex_lock(&GlobalClientSubscribeMutex); \ ithread_mutex_lock(&GlobalClientSubscribeMutex); \
DBGONLY(UpnpPrintf(UPNP_INFO,GENA,__FILE__,__LINE__,"Subscribe Lock");) UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, \
"Subscribe Lock");
// Unlock the subscription // Unlock the subscription
#define SubscribeUnlock() \ #define SubscribeUnlock() \
DBGONLY(UpnpPrintf(UPNP_INFO,GENA,__FILE__,__LINE__, \ UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, \
"Trying Subscribe UnLock")); \ "Trying Subscribe UnLock"); \
ithread_mutex_unlock(&GlobalClientSubscribeMutex); \ ithread_mutex_unlock(&GlobalClientSubscribeMutex); \
DBGONLY(UpnpPrintf(UPNP_INFO,GENA,__FILE__,__LINE__,"Subscribe UnLock");) UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, \
"Subscribe UnLock");
// Structure to send NOTIFY message to all subscribed control points // Structure to send NOTIFY message to all subscribed control points

View File

@ -214,37 +214,101 @@ EXTERN_C ssize_t readLine(int fd, char *out, int max, int *timeout);
EXTERN_C int remove_dots(char * in, int size); EXTERN_C int remove_dots(char * in, int size);
DBGONLY(EXTERN_C void print_http_request(http_message #ifdef DEBUG
*message,Dbg_Level DLevel, EXTERN_C void print_http_request(
Dbg_Module Module,char *DbgFileName, http_message *message,
int DbgLineNo););
DBGONLY(EXTERN_C void print_http_response(http_message *message,
Dbg_Level DLevel,
Dbg_Module Module,char *DbgFileName,
int DbgLineNo););
DBGONLY(EXTERN_C void print_token( token * in,
Dbg_Level DLevel, Dbg_Level DLevel,
Dbg_Module Module, Dbg_Module Module,
char *DbgFileName, char *DbgFileName,
int DbgLineNo);); int DbgLineNo);
#else
DBGONLY(EXTERN_C void print_status_line(http_status *in, static inline void print_http_request(
http_message *message,
Dbg_Level DLevel, Dbg_Level DLevel,
Dbg_Module Module, Dbg_Module Module,
char *DbgFileName, char *DbgFileName,
int DbgLineNo);); int DbgLineNo) {}
#endif
DBGONLY(EXTERN_C void print_request_line(http_request *in, #ifdef DEBUG
Dbg_Level DLevel, EXTERN_C void print_http_response(
Dbg_Module Module, http_message *message,
char *DbgFileName,int DbgLineNo));
DBGONLY(EXTERN_C void print_uri( uri_type *in,
Dbg_Level DLevel, Dbg_Level DLevel,
Dbg_Module Module, Dbg_Module Module,
char *DbgFileName, char *DbgFileName,
int DbgLineNo);); int DbgLineNo);
#else
static inline void print_http_response(
http_message *message,
Dbg_Level DLevel,
Dbg_Module Module,
char *DbgFileName,
int DbgLineNo) {}
#endif
#ifdef DEBUG
EXTERN_C void print_token(
token *in,
Dbg_Level DLevel,
Dbg_Module Module,
char *DbgFileName,
int DbgLineNo);
#else
static inline void print_token(
token *in,
Dbg_Level DLevel,
Dbg_Module Module,
char *DbgFileName,
int DbgLineNo) {}
#endif
#ifdef DEBUG
EXTERN_C void print_status_line(
http_status *in,
Dbg_Level DLevel,
Dbg_Module Module,
char *DbgFileName,
int DbgLineNo);
#else
static inline void print_status_line(
http_status *in,
Dbg_Level DLevel,
Dbg_Module Module,
char *DbgFileName,
int DbgLineNo) {}
#endif
#ifdef DEBUG
EXTERN_C void print_request_line(
http_request *in,
Dbg_Level DLevel,
Dbg_Module Module,
char *DbgFileName,
int DbgLineNo);
#else
static inline void print_request_line(
http_request *in,
Dbg_Level DLevel,
Dbg_Module Module,
char *DbgFileName,
int DbgLineNo) {}
#endif
#ifdef DEBUG
EXTERN_C void print_uri(
uri_type *in,
Dbg_Level DLevel,
Dbg_Module Module,
char *DbgFileName,
int DbgLineNo);
#else
static inline void print_uri(
uri_type *in,
Dbg_Level DLevel,
Dbg_Module Module,
char *DbgFileName,
int DbgLineNo) {}
#endif
#endif #endif

View File

@ -488,7 +488,11 @@ const char* method_to_str( IN http_method_t method );
* Returns: * Returns:
* void * void
************************************************************************/ ************************************************************************/
#ifdef DEBUG
void print_http_headers( IN http_message_t *hmsg ); void print_http_headers( IN http_message_t *hmsg );
#else
static inline void print_http_headers( IN http_message_t *hmsg ) {}
#endif
#ifdef __cplusplus #ifdef __cplusplus
} // extern "C" } // extern "C"
@ -496,3 +500,4 @@ void print_http_headers( IN http_message_t* hmsg );
#endif // GENLIB_NET_HTTP_HTTPPARSER_H #endif // GENLIB_NET_HTTP_HTTPPARSER_H

View File

@ -47,7 +47,7 @@ extern "C" {
#define SID_SIZE 41 #define SID_SIZE 41
DEVICEONLY( #ifdef INCLUDE_DEVICE_APIS
typedef struct SUBSCRIPTION { typedef struct SUBSCRIPTION {
Upnp_SID sid; Upnp_SID sid;
@ -263,9 +263,17 @@ service_info * FindServiceControlURLPath( service_table *table,
* *
* Note : * Note :
************************************************************************/ ************************************************************************/
DBGONLY(void printService(service_info *service,Dbg_Level #ifdef DEBUG
level, void printService(
Dbg_Module module)); service_info *service,
Dbg_Level level,
Dbg_Module module);
#else
static inline void printService(
service_info *service,
Dbg_Level level,
Dbg_Module module) {}
#endif
/************************************************************************ /************************************************************************
* Function : printServiceList * Function : printServiceList
@ -282,8 +290,17 @@ DBGONLY(void printService(service_info *service,Dbg_Level
* *
* Note : * Note :
************************************************************************/ ************************************************************************/
DBGONLY(void printServiceList(service_info *service, #ifdef DEBUG
Dbg_Level level, Dbg_Module module)); void printServiceList(
service_info *service,
Dbg_Level level,
Dbg_Module module);
#else
static inline void printServiceList(
service_info *service,
Dbg_Level level,
Dbg_Module module) {}
#endif
/************************************************************************ /************************************************************************
* Function : printServiceTable * Function : printServiceTable
@ -301,9 +318,17 @@ DBGONLY(void printServiceList(service_info *service,
* *
* Note : * Note :
************************************************************************/ ************************************************************************/
DBGONLY(void printServiceTable(service_table * #ifdef DEBUG
table,Dbg_Level void printServiceTable(
level,Dbg_Module module)); service_table *table,
Dbg_Level level,
Dbg_Module module);
#else
static inline void printServiceTable(
service_table *table,
Dbg_Level level,
Dbg_Module module) {}
#endif
/************************************************************************ /************************************************************************
* Function : freeService * Function : freeService
@ -451,10 +476,11 @@ int getSubElement(const char *element_name, IXML_Node *node,
IXML_Node **out); IXML_Node **out);
) /* DEVICEONLY */ #endif /* INCLUDE_DEVICE_APIS */
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif /* _SERVICE_TABLE */ #endif /* _SERVICE_TABLE */

View File

@ -96,8 +96,16 @@ struct Handle_Info
extern ithread_mutex_t GlobalHndMutex; extern ithread_mutex_t GlobalHndMutex;
Upnp_Handle_Type GetHandleInfo(int Hnd, struct Handle_Info **HndInfo); Upnp_Handle_Type GetHandleInfo(int Hnd, struct Handle_Info **HndInfo);
#define HandleLock() DBGONLY(UpnpPrintf(UPNP_INFO,API,__FILE__,__LINE__,"Trying Lock")); ithread_mutex_lock(&GlobalHndMutex); DBGONLY(UpnpPrintf(UPNP_INFO,API,__FILE__,__LINE__,"LOCK")); #define HandleLock() \
#define HandleUnlock() DBGONLY(UpnpPrintf(UPNP_INFO,API,__FILE__,__LINE__,"Trying Unlock")); ithread_mutex_unlock(&GlobalHndMutex); DBGONLY(UpnpPrintf(UPNP_INFO,API,__FILE__,__LINE__,"Unlock")); UpnpPrintf(UPNP_INFO, API, __FILE__, __LINE__, "Trying Lock"); \
ithread_mutex_lock(&GlobalHndMutex); \
UpnpPrintf(UPNP_INFO, API, __FILE__, __LINE__, "LOCK");
#define HandleUnlock() \
UpnpPrintf(UPNP_INFO, API,__FILE__, __LINE__, "Trying Unlock"); \
ithread_mutex_unlock(&GlobalHndMutex); \
UpnpPrintf(UPNP_INFO, API, __FILE__, __LINE__, "Unlock");
Upnp_Handle_Type GetClientHandleInfo(int *client_handle_out, Upnp_Handle_Type GetClientHandleInfo(int *client_handle_out,
struct Handle_Info **HndInfo); struct Handle_Info **HndInfo);
Upnp_Handle_Type GetDeviceHandleInfo(int *device_handle_out, Upnp_Handle_Type GetDeviceHandleInfo(int *device_handle_out,

View File

@ -182,13 +182,16 @@ void free_URL_list(URL_list * list);
* uri_type *in ; URI object * uri_type *in ; URI object
* *
* Description : Function useful in debugging for printing a parsed uri. * Description : Function useful in debugging for printing a parsed uri.
* Compiled out with DBGONLY macro.
* *
* Return : void ; * Return : void ;
* *
* Note : * Note :
************************************************************************/ ************************************************************************/
DBGONLY(void print_uri( uri_type *in);) #ifdef DEBUG
void print_uri(uri_type *in);
#else
static inline void print_uri(uri_type *in) {}
#endif
/************************************************************************ /************************************************************************
* Function : print_token * Function : print_token
@ -197,13 +200,16 @@ DBGONLY(void print_uri( uri_type *in);)
* token * in ; * token * in ;
* *
* Description : Function useful in debugging for printing a token. * Description : Function useful in debugging for printing a token.
* Compiled out with DBGONLY macro.
* *
* Return : void ; * Return : void ;
* *
* Note : * Note :
************************************************************************/ ************************************************************************/
#ifdef DEBUG
void print_token(token *in); void print_token(token *in);
#else
static inline void print_token(token * in) {}
#endif
/************************************************************************ /************************************************************************
* Function : token_string_casecmp * Function : token_string_casecmp

View File

@ -619,9 +619,8 @@ SoapSendAction( IN char *action_url,
err_code = UPNP_E_OUTOF_MEMORY; // default error err_code = UPNP_E_OUTOF_MEMORY; // default error
DBGONLY( UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__,
"Inside SoapSendAction():" ); "Inside SoapSendAction():" );
)
// init // init
membuffer_init( &request ); membuffer_init( &request );
membuffer_init( &responsename ); membuffer_init( &responsename );
@ -642,12 +641,12 @@ SoapSendAction( IN char *action_url,
goto error_handler; goto error_handler;
} }
DBGONLY( UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__,
"path=%.*s, hostport=%.*s\n", "path=%.*s, hostport=%.*s\n",
(int)url.pathquery.size, (int)url.pathquery.size,
url.pathquery.buff, url.pathquery.buff,
(int)url.hostport.text.size, (int)url.hostport.text.size,
url.hostport.text.buff ); ) url.hostport.text.buff );
xml_start_len = strlen( xml_start ); xml_start_len = strlen( xml_start );
xml_end_len = strlen( xml_end ); xml_end_len = strlen( xml_end );
@ -771,9 +770,8 @@ SoapSendActionEx( IN char *action_url,
err_code = UPNP_E_OUTOF_MEMORY; // default error err_code = UPNP_E_OUTOF_MEMORY; // default error
DBGONLY( UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__,
"Inside SoapSendActionEx():" ); "Inside SoapSendActionEx():" );
)
// init // init
membuffer_init( &request ); membuffer_init( &request );
membuffer_init( &responsename ); membuffer_init( &responsename );
@ -799,12 +797,12 @@ SoapSendActionEx( IN char *action_url,
goto error_handler; goto error_handler;
} }
DBGONLY( UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__,
"path=%.*s, hostport=%.*s\n", "path=%.*s, hostport=%.*s\n",
(int)url.pathquery.size, (int)url.pathquery.size,
url.pathquery.buff, url.pathquery.buff,
(int)url.hostport.text.size, (int)url.hostport.text.size,
url.hostport.text.buff ); ) url.hostport.text.buff );
xml_start_len = strlen( xml_start ); xml_start_len = strlen( xml_start );
xml_body_start_len = strlen( xml_body_start ); xml_body_start_len = strlen( xml_body_start );

View File

@ -344,9 +344,8 @@ get_action_node( IN IXML_Document * TempDoc,
int ret_code = -1; // error, by default int ret_code = -1; // error, by default
IXML_NodeList *nl = NULL; IXML_NodeList *nl = NULL;
DBGONLY( UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__,
"get_action_node(): node name =%s\n ", NodeName ); "get_action_node(): node name =%s\n ", NodeName );
)
*RespNode = NULL; *RespNode = NULL;
@ -738,11 +737,11 @@ send_action_response( IN SOCKINFO * info,
xml_response, strlen( xml_response ), xml_response, strlen( xml_response ),
end_body, strlen( end_body ) ); end_body, strlen( end_body ) );
DBGONLY( if( ret_code != 0 ) { if( ret_code != 0 ) {
UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__,
"Failed to send response: err code = %d\n", "Failed to send response: err code = %d\n",
ret_code );} ret_code );
) }
err_code = 0; err_code = 0;
@ -814,10 +813,9 @@ get_var_name( IN IXML_Document * TempDoc,
Temp = ixmlNode_getNodeValue( VarNode ); Temp = ixmlNode_getNodeValue( VarNode );
linecopy( VarName, Temp ); linecopy( VarName, Temp );
DBGONLY( UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__,
"Received query for variable name %s\n", "Received query for variable name %s\n",
VarName ); VarName );
)
ret_val = 0; // success ret_val = 0; // success
@ -878,8 +876,8 @@ handle_query_variable( IN SOCKINFO * info,
// send event // send event
soap_event_callback( UPNP_CONTROL_GET_VAR_REQUEST, &variable, cookie ); soap_event_callback( UPNP_CONTROL_GET_VAR_REQUEST, &variable, cookie );
DBGONLY( UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__,
"Return from callback for var request\n" ) ); "Return from callback for var request\n" );
// validate, and handle result // validate, and handle result
if( variable.CurrentVal == NULL ) { if( variable.CurrentVal == NULL ) {
@ -968,8 +966,8 @@ handle_invoke_action( IN SOCKINFO * info,
action.ErrCode = UPNP_E_SUCCESS; action.ErrCode = UPNP_E_SUCCESS;
action.CtrlPtIPAddr = info->foreign_ip_addr; action.CtrlPtIPAddr = info->foreign_ip_addr;
DBGONLY( UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__,
"Calling Callback\n" ) ); "Calling Callback\n" );
soap_event_callback( UPNP_CONTROL_ACTION_REQUEST, &action, cookie ); soap_event_callback( UPNP_CONTROL_ACTION_REQUEST, &action, cookie );

View File

@ -536,9 +536,8 @@ SearchByTarget( IN int Mx,
if( ReqBuf == NULL ) if( ReqBuf == NULL )
return UPNP_E_OUTOF_MEMORY; return UPNP_E_OUTOF_MEMORY;
DBGONLY( UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__,
">>> SSDP SEND >>>\n%s\n", ReqBuf ); ">>> SSDP SEND >>>\n%s\n", ReqBuf );
)
timeTillRead = Mx; timeTillRead = Mx;
@ -589,25 +588,22 @@ SearchByTarget( IN int Mx,
if( select( gSsdpReqSocket + 1, NULL, &wrSet, NULL, NULL ) if( select( gSsdpReqSocket + 1, NULL, &wrSet, NULL, NULL )
== UPNP_SOCKETERROR ) { == UPNP_SOCKETERROR ) {
DBGONLY( if( errno == EBADF ) { if( errno == EBADF ) {
UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__,
"SSDP_LIB :RequestHandler:An invalid file descriptor" "SSDP_LIB :RequestHandler:An invalid file descriptor"
" was givenin one of the sets. \n" );} " was givenin one of the sets. \n" );
else } else if( errno == EINTR ) {
if( errno == EINTR ) {
UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__,
"SSDP_LIB :RequestHandler: A non blocked " "SSDP_LIB :RequestHandler: A non blocked "
"signal was caught. \n" );} "signal was caught. \n" );
else } else if( errno == EINVAL ) {
if( errno == EINVAL ) {
UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__,
"SSDP_LIB :RequestHandler: n is negative. \n" );} "SSDP_LIB :RequestHandler: n is negative. \n" );
else } else if( errno == ENOMEM ) {
if( errno == ENOMEM ) {
UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__,
"SSDP_LIB : RequestHandler:select was unable to " "SSDP_LIB : RequestHandler:select was unable to "
"allocate memory for internal tables.\n" );} "allocate memory for internal tables.\n" );
) }
shutdown( gSsdpReqSocket, SD_BOTH ); shutdown( gSsdpReqSocket, SD_BOTH );
UpnpCloseSocket( gSsdpReqSocket ); UpnpCloseSocket( gSsdpReqSocket );
free( ReqBuf ); free( ReqBuf );

View File

@ -144,7 +144,7 @@ ssdp_handle_device_request( IN http_message_t * hmsg,
maxAge = dev_info->MaxAge; maxAge = dev_info->MaxAge;
HandleUnlock(); HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_PACKET, API, __FILE__, __LINE__, UpnpPrintf( UPNP_PACKET, API, __FILE__, __LINE__,
"ssdp_handle_device_request with Cmd %d SEARCH\n", "ssdp_handle_device_request with Cmd %d SEARCH\n",
event.Cmd ); event.Cmd );
UpnpPrintf( UPNP_PACKET, API, __FILE__, __LINE__, UpnpPrintf( UPNP_PACKET, API, __FILE__, __LINE__,
@ -156,7 +156,7 @@ ssdp_handle_device_request( IN http_message_t * hmsg,
UpnpPrintf( UPNP_PACKET, API, __FILE__, __LINE__, UpnpPrintf( UPNP_PACKET, API, __FILE__, __LINE__,
"DeviceUuid = %s\n", event.UDN ); "DeviceUuid = %s\n", event.UDN );
UpnpPrintf( UPNP_PACKET, API, __FILE__, __LINE__, UpnpPrintf( UPNP_PACKET, API, __FILE__, __LINE__,
"ServiceType = %s\n", event.ServiceType ); ) "ServiceType = %s\n", event.ServiceType );
threadArg = threadArg =
( SsdpSearchReply * ) malloc( sizeof( SsdpSearchReply ) ); ( SsdpSearchReply * ) malloc( sizeof( SsdpSearchReply ) );
@ -220,9 +220,9 @@ NewRequestHandler( IN struct sockaddr_in *DestAddr,
ReplySock = socket( AF_INET, SOCK_DGRAM, 0 ); ReplySock = socket( AF_INET, SOCK_DGRAM, 0 );
if( ReplySock == UPNP_INVALID_SOCKET ) { if( ReplySock == UPNP_INVALID_SOCKET ) {
DBGONLY( UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__,
"SSDP_LIB: New Request Handler:" "SSDP_LIB: New Request Handler:"
"Error in socket operation !!!\n" ) ); "Error in socket operation !!!\n" );
return UPNP_E_OUTOF_SOCKET; return UPNP_E_OUTOF_SOCKET;
} }
@ -247,10 +247,9 @@ NewRequestHandler( IN struct sockaddr_in *DestAddr,
// So, NUM_COPY has been changed from 2 to 1. // So, NUM_COPY has been changed from 2 to 1.
NumCopy = 0; NumCopy = 0;
while( NumCopy < NUM_COPY ) { while( NumCopy < NUM_COPY ) {
DBGONLY( UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__,
">>> SSDP SEND >>>\n%s\n", ">>> SSDP SEND >>>\n%s\n",
*( RqPacket + Index ) ); *( RqPacket + Index ) );
)
rc = sendto( ReplySock, *( RqPacket + Index ), rc = sendto( ReplySock, *( RqPacket + Index ),
strlen( *( RqPacket + Index ) ), strlen( *( RqPacket + Index ) ),
0, ( struct sockaddr * )DestAddr, socklen ); 0, ( struct sockaddr * )DestAddr, socklen );
@ -388,9 +387,8 @@ DeviceAdvertisement( IN char *DevType,
char *msgs[3]; char *msgs[3];
int ret_code; int ret_code;
DBGONLY( UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__,
"In function SendDeviceAdvertisemenrt\n" ); "In function SendDeviceAdvertisemenrt\n" );
)
DestAddr.sin_family = AF_INET; DestAddr.sin_family = AF_INET;
DestAddr.sin_addr.s_addr = inet_addr( SSDP_IP ); DestAddr.sin_addr.s_addr = inet_addr( SSDP_IP );
@ -783,8 +781,8 @@ DeviceShutdown( IN char *DevType,
Mil_Usn, Location, Duration, &msgs[0] ); Mil_Usn, Location, Duration, &msgs[0] );
} }
DBGONLY( UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__,
"In function DeviceShutdown\n" ); ) "In function DeviceShutdown\n" );
// both root and sub-devices need to send these two messages // both root and sub-devices need to send these two messages
CreateServicePacket( MSGTYPE_SHUTDOWN, Udn, Udn, CreateServicePacket( MSGTYPE_SHUTDOWN, Udn, Udn,
Location, Duration, &msgs[1] ); Location, Duration, &msgs[1] );

View File

@ -115,10 +115,10 @@ CLIENTONLY( SOCKET gSsdpReqSocket = 0;
const DOMString tmpStr; const DOMString tmpStr;
char SERVER[200]; char SERVER[200];
DBGONLY( const DOMString dbgStr; const DOMString dbgStr;
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside AdvertiseAndReply with AdFlag = %d\n", "Inside AdvertiseAndReply with AdFlag = %d\n",
AdFlag ); ) AdFlag );
HandleLock(); HandleLock();
if( GetHandleInfo( Hnd, &SInfo ) != HND_DEVICE ) { if( GetHandleInfo( Hnd, &SInfo ) != HND_DEVICE ) {
@ -139,24 +139,20 @@ CLIENTONLY( SOCKET gSsdpReqSocket = 0;
// parse the device list and send advertisements/replies // parse the device list and send advertisements/replies
for( i = 0;; i++ ) { for( i = 0;; i++ ) {
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Entering new device list with i = %d\n\n", "Entering new device list with i = %d\n\n", i );
i );
)
tmpNode = ixmlNodeList_item( SInfo->DeviceList, i ); tmpNode = ixmlNodeList_item( SInfo->DeviceList, i );
if( tmpNode == NULL ) { if( tmpNode == NULL ) {
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting new device list with i = %d\n\n", "Exiting new device list with i = %d\n\n", i );
i );
)
break; break;
} }
DBGONLY( dbgStr = ixmlNode_getNodeName( tmpNode ); dbgStr = ixmlNode_getNodeName( tmpNode );
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"Extracting device type once for %s\n", "Extracting device type once for %s\n",
dbgStr ); ) dbgStr );
// extract device type // extract device type
ixmlNodeList_free( nodeList ); ixmlNodeList_free( nodeList );
nodeList = NULL; nodeList = NULL;
@ -167,13 +163,12 @@ CLIENTONLY( SOCKET gSsdpReqSocket = 0;
continue; continue;
} }
DBGONLY( dbgStr = ixmlNode_getNodeName( tmpNode ); dbgStr = ixmlNode_getNodeName( tmpNode );
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Extracting UDN for %s\n", dbgStr ); ) "Extracting UDN for %s\n", dbgStr );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Extracting device type\n" ); "Extracting device type\n" );
)
tmpNode2 = ixmlNodeList_item( nodeList, 0 ); tmpNode2 = ixmlNodeList_item( nodeList, 0 );
if( tmpNode2 == NULL ) { if( tmpNode2 == NULL ) {
@ -184,9 +179,8 @@ CLIENTONLY( SOCKET gSsdpReqSocket = 0;
continue; continue;
} }
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Extracting device type \n" ); "Extracting device type \n" );
)
tmpStr = ixmlNode_getNodeValue( textNode ); tmpStr = ixmlNode_getNodeValue( textNode );
if( tmpStr == NULL ) { if( tmpStr == NULL ) {
@ -198,47 +192,41 @@ CLIENTONLY( SOCKET gSsdpReqSocket = 0;
continue; continue;
} }
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Extracting device type = %s\n", devType ); "Extracting device type = %s\n", devType );
if( tmpNode == NULL ) { if( tmpNode == NULL ) {
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"TempNode is NULL\n" );} "TempNode is NULL\n" );
}
dbgStr = ixmlNode_getNodeName( tmpNode ); dbgStr = ixmlNode_getNodeName( tmpNode );
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Extracting UDN for %s\n", dbgStr ); ) "Extracting UDN for %s\n", dbgStr );
// extract UDN // extract UDN
ixmlNodeList_free( nodeList ); ixmlNodeList_free( nodeList );
nodeList = NULL; nodeList = NULL;
nodeList = ixmlElement_getElementsByTagName( ( IXML_Element * ) nodeList = ixmlElement_getElementsByTagName( ( IXML_Element * )
tmpNode, "UDN" ); tmpNode, "UDN" );
if( nodeList == NULL ) { if( nodeList == NULL ) {
UpnpPrintf( UPNP_CRITICAL, API, __FILE__,
DBGONLY( UpnpPrintf( UPNP_CRITICAL, API, __FILE__,
__LINE__, "UDN not found!!!\n" ); __LINE__, "UDN not found!!!\n" );
)
continue; continue;
} }
tmpNode2 = ixmlNodeList_item( nodeList, 0 ); tmpNode2 = ixmlNodeList_item( nodeList, 0 );
if( tmpNode2 == NULL ) { if( tmpNode2 == NULL ) {
UpnpPrintf( UPNP_CRITICAL, API, __FILE__,
DBGONLY( UpnpPrintf( UPNP_CRITICAL, API, __FILE__,
__LINE__, "UDN not found!!!\n" ); __LINE__, "UDN not found!!!\n" );
)
continue; continue;
} }
textNode = ixmlNode_getFirstChild( tmpNode2 ); textNode = ixmlNode_getFirstChild( tmpNode2 );
if( textNode == NULL ) { if( textNode == NULL ) {
UpnpPrintf( UPNP_CRITICAL, API, __FILE__,
DBGONLY( UpnpPrintf( UPNP_CRITICAL, API, __FILE__,
__LINE__, "UDN not found!!!\n" ); __LINE__, "UDN not found!!!\n" );
)
continue; continue;
} }
tmpStr = ixmlNode_getNodeValue( textNode ); tmpStr = ixmlNode_getNodeValue( textNode );
if( tmpStr == NULL ) { if( tmpStr == NULL ) {
DBGONLY( UpnpPrintf( UPNP_CRITICAL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_CRITICAL, API, __FILE__, __LINE__,
"UDN not found!!!!\n" ); "UDN not found!!!!\n" );
)
continue; continue;
} }
strcpy( UDNstr, tmpStr ); strcpy( UDNstr, tmpStr );
@ -246,9 +234,8 @@ CLIENTONLY( SOCKET gSsdpReqSocket = 0;
continue; continue;
} }
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"Sending UDNStr = %s \n", UDNstr ); "Sending UDNStr = %s \n", UDNstr );
)
if( AdFlag ) { if( AdFlag ) {
// send the device advertisement // send the device advertisement
if( AdFlag == 1 ) { if( AdFlag == 1 ) {
@ -278,22 +265,16 @@ CLIENTONLY( SOCKET gSsdpReqSocket = 0;
{ {
if( DeviceUDN != NULL && strlen( DeviceUDN ) != 0 ) { if( DeviceUDN != NULL && strlen( DeviceUDN ) != 0 ) {
if( strcasecmp( DeviceUDN, UDNstr ) ) { if( strcasecmp( DeviceUDN, UDNstr ) ) {
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
( UPNP_INFO, API, __FILE__,
__LINE__,
"DeviceUDN=%s and search " "DeviceUDN=%s and search "
"UDN=%s did not match\n", "UDN=%s did not match\n",
UDNstr, DeviceUDN ); UDNstr, DeviceUDN );
)
break; break;
} else { } else {
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
( UPNP_INFO, API, __FILE__,
__LINE__,
"DeviceUDN=%s and search " "DeviceUDN=%s and search "
"UDN=%s MATCH\n", UDNstr, "UDN=%s MATCH\n", UDNstr,
DeviceUDN ); DeviceUDN );
)
SendReply( DestAddr, devType, 0, SendReply( DestAddr, devType, 0,
UDNstr, SInfo->DescURL, UDNstr, SInfo->DescURL,
defaultExp, 0 ); defaultExp, 0 );
@ -306,24 +287,17 @@ CLIENTONLY( SOCKET gSsdpReqSocket = 0;
if( !strncasecmp if( !strncasecmp
( DeviceType, devType, ( DeviceType, devType,
strlen( DeviceType ) ) ) { strlen( DeviceType ) ) ) {
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
( UPNP_INFO, API, __FILE__, __LINE__,
"DeviceType=%s and search devType=%s MATCH\n", "DeviceType=%s and search devType=%s MATCH\n",
devType, DeviceType ); devType, DeviceType );
)
SendReply( DestAddr, devType, 0, UDNstr, SendReply( DestAddr, devType, 0, UDNstr,
SInfo->DescURL, defaultExp, 1 ); SInfo->DescURL, defaultExp, 1 );
} } else {
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
DBGONLY(
else
UpnpPrintf( UPNP_INFO, API, __FILE__,
__LINE__,
"DeviceType=%s and search devType=%s" "DeviceType=%s and search devType=%s"
" DID NOT MATCH\n", " DID NOT MATCH\n",
devType, DeviceType ); devType, DeviceType );
) }
break; break;
} }
default: default:
@ -332,9 +306,8 @@ CLIENTONLY( SOCKET gSsdpReqSocket = 0;
} }
// send service advertisements for services corresponding // send service advertisements for services corresponding
// to the same device // to the same device
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"Sending service Advertisement\n" ); "Sending service Advertisement\n" );
)
tmpNode = ixmlNodeList_item( SInfo->ServiceList, i ); tmpNode = ixmlNodeList_item( SInfo->ServiceList, i );
if( tmpNode == NULL ) { if( tmpNode == NULL ) {
@ -345,9 +318,8 @@ CLIENTONLY( SOCKET gSsdpReqSocket = 0;
nodeList = ixmlElement_getElementsByTagName( ( IXML_Element * ) nodeList = ixmlElement_getElementsByTagName( ( IXML_Element * )
tmpNode, "service" ); tmpNode, "service" );
if( nodeList == NULL ) { if( nodeList == NULL ) {
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"Service not found 3\n" ); "Service not found 3\n" );
)
continue; continue;
} }
for( j = 0;; j++ ) { for( j = 0;; j++ ) {
@ -357,15 +329,11 @@ CLIENTONLY( SOCKET gSsdpReqSocket = 0;
ixmlNodeList_free( tmpNodeList ); ixmlNodeList_free( tmpNodeList );
tmpNodeList = NULL; tmpNodeList = NULL;
tmpNodeList = ixmlElement_getElementsByTagName( ( IXML_Element tmpNodeList = ixmlElement_getElementsByTagName(
* ) tmpNode, ( IXML_Element *)tmpNode, "serviceType" );
"serviceType" );
if( tmpNodeList == NULL ) { if( tmpNodeList == NULL ) {
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_CRITICAL, API, __FILE__, __LINE__,
( UPNP_CRITICAL, API, __FILE__, __LINE__,
"ServiceType not found \n" ); "ServiceType not found \n" );
)
continue; continue;
} }
tmpNode2 = ixmlNodeList_item( tmpNodeList, 0 ); tmpNode2 = ixmlNodeList_item( tmpNodeList, 0 );
@ -386,19 +354,16 @@ CLIENTONLY( SOCKET gSsdpReqSocket = 0;
continue; continue;
} }
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"ServiceType = %s\n", servType ); "ServiceType = %s\n", servType );
)
if( AdFlag ) { if( AdFlag ) {
if( AdFlag == 1 ) { if( AdFlag == 1 ) {
ServiceAdvertisement( UDNstr, servType, ServiceAdvertisement( UDNstr, servType,
SInfo->DescURL, Exp ); SInfo->DescURL, Exp );
} else // AdFlag == -1 } else { // AdFlag == -1
{
ServiceShutdown( UDNstr, servType, ServiceShutdown( UDNstr, servType,
SInfo->DescURL, Exp ); SInfo->DescURL, Exp );
} }
} else { } else {
switch ( SearchType ) { switch ( SearchType ) {
case SSDP_ALL: case SSDP_ALL:
@ -433,9 +398,8 @@ CLIENTONLY( SOCKET gSsdpReqSocket = 0;
ixmlNodeList_free( nodeList ); ixmlNodeList_free( nodeList );
nodeList = NULL; nodeList = NULL;
} }
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__, UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting AdvertiseAndReply : \n" ); "Exiting AdvertiseAndReply : \n" );
)
HandleUnlock( ); HandleUnlock( );
@ -733,18 +697,16 @@ start_event_handler( void *Data )
if( status == PARSE_FAILURE ) { if( status == PARSE_FAILURE ) {
if( parser->msg.method != HTTPMETHOD_NOTIFY || if( parser->msg.method != HTTPMETHOD_NOTIFY ||
!parser->valid_ssdp_notify_hack ) { !parser->valid_ssdp_notify_hack ) {
DBGONLY( UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__,
"SSDP recvd bad msg code = %d\n", "SSDP recvd bad msg code = %d\n",
status ); status );
)
// ignore bad msg, or not enuf mem // ignore bad msg, or not enuf mem
goto error_handler; goto error_handler;
} }
// valid notify msg // valid notify msg
} else if( status != PARSE_SUCCESS ) { } else if( status != PARSE_SUCCESS ) {
DBGONLY( UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__,
"SSDP recvd bad msg code = %d\n", status ); "SSDP recvd bad msg code = %d\n", status );
)
goto error_handler; goto error_handler;
} }
@ -863,19 +825,16 @@ readFromSSDPSocket( SOCKET socket )
if( byteReceived > 0 ) { if( byteReceived > 0 ) {
requestBuf[byteReceived] = '\0'; requestBuf[byteReceived] = '\0';
DBGONLY( UpnpPrintf( UPNP_INFO, SSDP, UpnpPrintf( UPNP_INFO, SSDP,
__FILE__, __LINE__, __FILE__, __LINE__,
"Received response !!! " "Received response !!! "
"%s From host %s \n", "%s From host %s \n",
requestBuf, requestBuf,
inet_ntoa( clientAddr.sin_addr ) ); inet_ntoa( clientAddr.sin_addr ) );
)
DBGONLY( UpnpPrintf( UPNP_PACKET, SSDP, UpnpPrintf( UPNP_PACKET, SSDP, __FILE__, __LINE__,
__FILE__, __LINE__,
"Received multicast packet:" "Received multicast packet:"
"\n %s\n", requestBuf ); "\n %s\n", requestBuf );
)
//add thread pool job to handle request //add thread pool job to handle request
if( data != NULL ) { if( data != NULL ) {
data->parser.msg.msg.length += byteReceived; data->parser.msg.msg.length += byteReceived;
@ -891,7 +850,6 @@ readFromSSDPSocket( SOCKET socket )
free_ssdp_event_handler_data( data ); free_ssdp_event_handler_data( data );
} }
} }
} else { } else {
free_ssdp_event_handler_data( data ); free_ssdp_event_handler_data( data );
} }
@ -926,9 +884,9 @@ get_ssdp_sockets( MiniServerSockArray * out )
CLIENTONLY( if( ( ssdpReqSock = socket( AF_INET, SOCK_DGRAM, 0 ) ) CLIENTONLY( if( ( ssdpReqSock = socket( AF_INET, SOCK_DGRAM, 0 ) )
== UPNP_INVALID_SOCKET ) { == UPNP_INVALID_SOCKET ) {
DBGONLY( UpnpPrintf( UPNP_CRITICAL, UpnpPrintf( UPNP_CRITICAL,
SSDP, __FILE__, __LINE__, SSDP, __FILE__, __LINE__,
"Error in socket operation !!!\n" ); ) "Error in socket operation !!!\n" );
return UPNP_E_OUTOF_SOCKET;} return UPNP_E_OUTOF_SOCKET;}
setsockopt( ssdpReqSock, setsockopt( ssdpReqSock,
IPPROTO_IP, IPPROTO_IP,
@ -938,10 +896,9 @@ get_ssdp_sockets( MiniServerSockArray * out )
if( ( ssdpSock = socket( AF_INET, SOCK_DGRAM, 0 ) ) if( ( ssdpSock = socket( AF_INET, SOCK_DGRAM, 0 ) )
== UPNP_INVALID_SOCKET ) { == UPNP_INVALID_SOCKET ) {
DBGONLY( UpnpPrintf( UPNP_CRITICAL, UpnpPrintf( UPNP_CRITICAL,
SSDP, __FILE__, __LINE__, SSDP, __FILE__, __LINE__,
"Error in socket operation !!!\n" ); "Error in socket operation !!!\n" );
)
CLIENTONLY( shutdown( ssdpReqSock, SD_BOTH ) ); CLIENTONLY( shutdown( ssdpReqSock, SD_BOTH ) );
CLIENTONLY( UpnpCloseSocket( ssdpReqSock ) ); CLIENTONLY( UpnpCloseSocket( ssdpReqSock ) );
return UPNP_E_OUTOF_SOCKET; return UPNP_E_OUTOF_SOCKET;
@ -951,10 +908,9 @@ get_ssdp_sockets( MiniServerSockArray * out )
if( setsockopt( ssdpSock, SOL_SOCKET, SO_REUSEADDR, if( setsockopt( ssdpSock, SOL_SOCKET, SO_REUSEADDR,
( char * )&onOff, sizeof( onOff ) ) != 0 ) { ( char * )&onOff, sizeof( onOff ) ) != 0 ) {
DBGONLY( UpnpPrintf( UPNP_CRITICAL, UpnpPrintf( UPNP_CRITICAL,
SSDP, __FILE__, __LINE__, SSDP, __FILE__, __LINE__,
"Error in set reuse addr !!!\n" ); "Error in set reuse addr !!!\n" );
)
CLIENTONLY( shutdown( ssdpReqSock, SD_BOTH ) ); CLIENTONLY( shutdown( ssdpReqSock, SD_BOTH ) );
CLIENTONLY( UpnpCloseSocket( ssdpReqSock ) ); CLIENTONLY( UpnpCloseSocket( ssdpReqSock ) );
shutdown( ssdpSock, SD_BOTH ); shutdown( ssdpSock, SD_BOTH );
@ -966,10 +922,9 @@ get_ssdp_sockets( MiniServerSockArray * out )
if( setsockopt( ssdpSock, SOL_SOCKET, SO_REUSEPORT, if( setsockopt( ssdpSock, SOL_SOCKET, SO_REUSEPORT,
( char * )&onOff, sizeof( onOff ) ) != 0 ) { ( char * )&onOff, sizeof( onOff ) ) != 0 ) {
DBGONLY( UpnpPrintf( UPNP_CRITICAL, UpnpPrintf( UPNP_CRITICAL,
SSDP, __FILE__, __LINE__, SSDP, __FILE__, __LINE__,
"Error in set reuse port !!!\n" ); "Error in set reuse port !!!\n" );
)
CLIENTONLY( shutdown( ssdpReqSock, SD_BOTH ) ); CLIENTONLY( shutdown( ssdpReqSock, SD_BOTH ) );
CLIENTONLY( UpnpCloseSocket( ssdpReqSock ) ); CLIENTONLY( UpnpCloseSocket( ssdpReqSock ) );
shutdown( ssdpSock, SD_BOTH ); shutdown( ssdpSock, SD_BOTH );
@ -986,10 +941,9 @@ get_ssdp_sockets( MiniServerSockArray * out )
if( bind if( bind
( ssdpSock, ( struct sockaddr * )&ssdpAddr, ( ssdpSock, ( struct sockaddr * )&ssdpAddr,
sizeof( ssdpAddr ) ) != 0 ) { sizeof( ssdpAddr ) ) != 0 ) {
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_CRITICAL,
( UPNP_CRITICAL, SSDP, __FILE__, __LINE__, SSDP, __FILE__, __LINE__,
"Error in binding !!!\n" ); "Error in binding !!!\n" );
)
shutdown( ssdpSock, SD_BOTH ); shutdown( ssdpSock, SD_BOTH );
UpnpCloseSocket( ssdpSock ); UpnpCloseSocket( ssdpSock );
CLIENTONLY( shutdown( ssdpReqSock, SD_BOTH ) ); CLIENTONLY( shutdown( ssdpReqSock, SD_BOTH ) );
@ -1003,10 +957,9 @@ get_ssdp_sockets( MiniServerSockArray * out )
if( setsockopt( ssdpSock, IPPROTO_IP, IP_ADD_MEMBERSHIP, if( setsockopt( ssdpSock, IPPROTO_IP, IP_ADD_MEMBERSHIP,
( char * )&ssdpMcastAddr, ( char * )&ssdpMcastAddr,
sizeof( struct ip_mreq ) ) != 0 ) { sizeof( struct ip_mreq ) ) != 0 ) {
DBGONLY( UpnpPrintf UpnpPrintf( UPNP_CRITICAL,
( UPNP_CRITICAL, SSDP, __FILE__, __LINE__, SSDP, __FILE__, __LINE__,
"Error in joining" " multicast group !!!\n" ); "Error in joining" " multicast group !!!\n" );
)
shutdown( ssdpSock, SD_BOTH ); shutdown( ssdpSock, SD_BOTH );
CLIENTONLY( shutdown( ssdpReqSock, SD_BOTH ) ); CLIENTONLY( shutdown( ssdpReqSock, SD_BOTH ) );
UpnpCloseSocket( ssdpSock ); UpnpCloseSocket( ssdpSock );
@ -1019,8 +972,8 @@ get_ssdp_sockets( MiniServerSockArray * out )
addr.s_addr = inet_addr(LOCAL_HOST); addr.s_addr = inet_addr(LOCAL_HOST);
if (setsockopt(ssdpSock, IPPROTO_IP, IP_MULTICAST_IF, if (setsockopt(ssdpSock, IPPROTO_IP, IP_MULTICAST_IF,
(char *)&addr, sizeof addr) != 0) { (char *)&addr, sizeof addr) != 0) {
DBGONLY(UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__,
"Couldn't set multicast interface.\n" )); "Couldn't set multicast interface.\n" );
/* This is probably not a critical error, so let's continue. */ /* This is probably not a critical error, so let's continue. */
} }
@ -1029,10 +982,9 @@ get_ssdp_sockets( MiniServerSockArray * out )
IP_MULTICAST_TTL, &ttl, sizeof( ttl ) ); IP_MULTICAST_TTL, &ttl, sizeof( ttl ) );
if( setsockopt( ssdpSock, SOL_SOCKET, SO_BROADCAST, if( setsockopt( ssdpSock, SOL_SOCKET, SO_BROADCAST,
( char * )&option, sizeof( option ) ) != 0 ) { ( char * )&option, sizeof( option ) ) != 0 ) {
DBGONLY( UpnpPrintf( UPNP_CRITICAL, UpnpPrintf( UPNP_CRITICAL,
SSDP, __FILE__, __LINE__, SSDP, __FILE__, __LINE__,
"Error in setting broadcast !!!\n" ); "Error in setting broadcast !!!\n" );
)
shutdown( ssdpSock, SD_BOTH ); shutdown( ssdpSock, SD_BOTH );
CLIENTONLY( shutdown( ssdpReqSock, SD_BOTH ) ); CLIENTONLY( shutdown( ssdpReqSock, SD_BOTH ) );
UpnpCloseSocket( ssdpSock ); UpnpCloseSocket( ssdpSock );

View File

@ -168,9 +168,8 @@ calc_descURL( IN const char *ipPortStr,
strcat( descURL, ipPortStr ); strcat( descURL, ipPortStr );
strcat( descURL, alias ); strcat( descURL, alias );
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"desc url: %s\n", descURL ); "desc url: %s\n", descURL );
)
return UPNP_E_SUCCESS; return UPNP_E_SUCCESS;
} }
@ -408,12 +407,10 @@ configure_urlbase( INOUT IXML_Document * doc,
goto error_handler; goto error_handler;
} }
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"desc url: %s\n", docURL ); "desc url: %s\n", docURL );
) UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"doc = %s\n", xml_str ); "doc = %s\n", xml_str );
)
// store in web server // store in web server
err_code = err_code =
web_server_set_alias( new_alias, xml_str, strlen( xml_str ), web_server_set_alias( new_alias, xml_str, strlen( xml_str ),