- 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
*************************************************************************
*******************************************************************************
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>
* 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,
there will be no error -108 for not finding directory web.
*************************************************************************
*******************************************************************************
Version 1.4.6
*************************************************************************
*******************************************************************************
2007-04-19 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
* Fix for freebsd host_os in configure.ac.
*************************************************************************
*******************************************************************************
Version 1.4.5
*************************************************************************
*******************************************************************************
2007-04-19 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
* 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".
The attached patch should fix this.
*************************************************************************
*******************************************************************************
Version 1.4.4
*************************************************************************
*******************************************************************************
2007-04-06 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
* 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,
in order to get more information. See attached files.
*************************************************************************
*******************************************************************************
Version 1.4.3
*************************************************************************
*******************************************************************************
2007-03-13 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
* SF Tracker [ 1663004 ] Compile on Cygwin
@ -140,9 +148,9 @@ Version 1.4.3
* Fixed nasty segmentation fault bug on membuffer.c.
*************************************************************************
*******************************************************************************
Version 1.4.2
*************************************************************************
*******************************************************************************
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
*************************************************************************
*******************************************************************************
Version 1.4.1
*************************************************************************
*******************************************************************************
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
to loigu)
*************************************************************************
*******************************************************************************
Version 1.4.0
*************************************************************************
*******************************************************************************
2006-05-26 Oxy <virtual_worlds(at)gmx.de>
@ -305,9 +313,9 @@ Version 1.4.0
* Bugfix for M-Search packet
*************************************************************************
*******************************************************************************
FORK FROM DEAD libupnp
*************************************************************************
*******************************************************************************
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. */
/* Define to 1 to compile debug code */
@ -19,15 +19,18 @@
/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
#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 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 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 HAVE_MEMORY_H 1
@ -92,19 +95,19 @@
#define PACKAGE "libupnp"
/* 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 PACKAGE_NAME "libupnp"
/* 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 PACKAGE_TARNAME "libupnp"
/* 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
your system. */
@ -135,27 +138,30 @@
#define UPNP_VERSION_MINOR 4
/* see upnpconfig.h */
#define UPNP_VERSION_PATCH 0
#define UPNP_VERSION_PATCH 7
/* see upnpconfig.h */
#define UPNP_VERSION_STRING "1.4.0"
#define UPNP_VERSION_STRING "1.4.7"
/* 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 to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
/* #undef _LARGEFILE_SOURCE */
/* Define for large files, on AIX-style hosts. */
/* #undef _LARGE_FILES */
/* Large files support */
#define _LARGE_FILE_SOURCE
/* Define to empty if `const' does not conform to ANSI C. */
/* #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 */
/* Substitute for socklen_t */

View File

@ -34,7 +34,6 @@
#include "autoconfig.h"
#define MAX_JOBS_TOTAL 10
/** @name Compile time configuration options
* The Linux SDK for UPnP Devices contains some compile-time parameters
@ -96,6 +95,17 @@
#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
* SOAP messages will read at most {\tt DEFAULT_SOAP_CONTENT_LENGTH} bytes.
* 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_MINISERVER
#ifdef INTERNAL_WEB_SERVER
@ -358,4 +347,3 @@
//@}
#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 -*-
///////////////////////////////////////////////////////////////////////////
//
@ -40,7 +40,7 @@
***************************************************************************/
/** 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 */
#define UPNP_VERSION_MAJOR 1
@ -49,7 +49,7 @@
#define UPNP_VERSION_MINOR 4
/** 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 */
#define UPNP_VERSION \
@ -69,7 +69,7 @@
/** Defined to 1 if the library has been compiled with DEBUG enabled
* (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

View File

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

View File

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

View File

@ -33,11 +33,9 @@
#ifndef UPNP_DEBUG_H
#define UPNP_DEBUG_H
#include "upnp.h"
#include "upnpconfig.h"
// Function declarations only if debug compiled into the library
#if UPNP_HAVE_DEBUG
#include <stdio.h>
#ifdef __cplusplus
@ -70,7 +68,17 @@ extern "C" {
* \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 {
UPNP_CRITICAL,
@ -102,7 +110,11 @@ typedef enum Upnp_LogLevel_e {
* -1 : If fails
* UPNP_E_SUCCESS : if success
***************************************************************************/
#ifdef DEBUG
int UpnpInitLog();
#else
static inline int UpnpInitLog() { return UPNP_E_SUCCESS; }
#endif
// for backward compatibility
#define InitLog UpnpInitLog
@ -111,13 +123,17 @@ int UpnpInitLog();
/***************************************************************************
* Function : UpnpSetLogLevel
*
* Parameters: void
* Parameters: Upnp_LogLevel log_level
*
* Description:
* This functions set the log level (see {\tt Upnp_LogLevel}
* 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
* Returns: void
***************************************************************************/
#ifdef DEBUG
void UpnpCloseLog();
#else
static inline void UpnpCloseLog() {}
#endif
// for backward compatibility
#define CloseLog UpnpCloseLog
@ -149,7 +169,15 @@ void UpnpCloseLog();
* per the requested banner
* 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
#define SetLogFileNames UpnpSetLogFileNames
@ -171,12 +199,45 @@ void UpnpSetLogFileNames (const char* ErrFileName, const char* InfoFileName);
* NULL : if the module is turn off for debug
* else returns the right file descriptor
***************************************************************************/
#ifdef DEBUG
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
#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
*
@ -198,6 +259,7 @@ FILE* UpnpGetDebugFile (Upnp_LogLevel level, Dbg_Module module);
* debug statement is coming
* Returns: void
***************************************************************************/
#ifdef DEBUG
void UpnpPrintf (Upnp_LogLevel DLevel, Dbg_Module Module,
const char* DbgFileName, int DbgLineNo,
const char* FmtStr,
@ -206,6 +268,15 @@ void UpnpPrintf (Upnp_LogLevel DLevel, Dbg_Module Module,
__attribute__((format (__printf__, 5, 6)))
#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
* Returns: void
***************************************************************************/
void UpnpDisplayBanner (FILE *fd,
const char** lines, size_t size, int starlength);
#ifdef DEBUG
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
* 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
}
#endif
#endif // UPNP_HAVE_DEBUG
#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
DBGONLY( if( InitLog( ) != UPNP_E_SUCCESS )
return UPNP_E_INIT_FAILED; );
if( UpnpInitLog() != UPNP_E_SUCCESS ) {
return UPNP_E_INIT_FAILED;
}
DBGONLY( UpnpPrintf
( UPNP_INFO, API, __FILE__, __LINE__, "Inside UpnpInit \n" );
)
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, "Inside UpnpInit \n" );
// initialize mutex
#ifdef __CYGWIN__
/* On Cygwin, pthread_mutex_init() fails without this memset. */
@ -281,9 +280,8 @@ int UpnpInit( IN const char *HostIP,
}
#if EXCLUDE_MINISERVER == 0
if( ( retVal = StartMiniServer( DestPort ) ) <= 0 ) {
DBGONLY( UpnpPrintf( UPNP_CRITICAL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_CRITICAL, API, __FILE__, __LINE__,
"Miniserver failed to start" );
)
UpnpFinish();
UpnpSdkInit = 0;
if( retVal != -1 )
@ -304,19 +302,17 @@ int UpnpInit( IN const char *HostIP,
}
#endif
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"Host Ip: %s Host Port: %d\n", LOCAL_HOST,
LOCAL_PORT ) );
LOCAL_PORT );
DBGONLY( UpnpPrintf
( UPNP_INFO, API, __FILE__, __LINE__, "Exiting UpnpInit \n" );
)
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, "Exiting UpnpInit \n" );
return UPNP_E_SUCCESS;
} /***************** end of UpnpInit ******************/
DBGONLY(
#ifdef DEBUG
static void
PrintThreadPoolStats (const char* DbgFileName, int DbgLineNo,
const char* msg, const ThreadPoolStats* const stats)
@ -337,7 +333,8 @@ PrintThreadPoolStats (const char* DbgFileName, int DbgLineNo,
stats->avgWaitHQ, stats->avgWaitMQ, stats->avgWaitLQ,
stats->maxThreads, stats->totalWorkTime,
stats->totalIdleTime );
})
}
#endif
/****************************************************************************
@ -366,8 +363,9 @@ UpnpFinish( )
)
struct Handle_Info *temp;
DBGONLY( ThreadPoolStats stats;
)
#ifdef DEBUG
ThreadPoolStats stats;
#endif
#ifdef WIN32
// WSACleanup( );
@ -376,18 +374,21 @@ UpnpFinish( )
if( UpnpSdkInit != 1 )
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__,
"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 );
PrintThreadPoolStats (__FILE__, __LINE__,
"Recv Thread Pool", &stats);
ThreadPoolGetStats( &gSendThreadPool, &stats );
PrintThreadPoolStats (__FILE__, __LINE__,
"Send Thread Pool", &stats);
)
#endif
#ifdef INCLUDE_DEVICE_APIS
if( GetDeviceHandleInfo( &device_handle, &temp ) == HND_DEVICE )
UpnpUnRegisterRootDevice( device_handle );
@ -406,12 +407,20 @@ UpnpFinish( )
web_server_destroy();
#endif
#ifdef DEBUG
ThreadPoolShutdown( &gSendThreadPool );
ThreadPoolShutdown( &gRecvThreadPool );
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
DBGONLY( CloseLog( );
);
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);
CloseLog();
#endif
CLIENTONLY( ithread_mutex_destroy( &GlobalClientSubscribeMutex );
)
@ -522,16 +531,14 @@ UpnpAddRootDevice( IN const char *DescURL,
if( addServiceTable
( ( IXML_Node * ) temp, &HInfo->ServiceTable, DescURL ) ) {
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"UpnpAddRootDevice: GENA Service Table \n" );
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"Here are the known services: \n" );
printServiceTable( &HInfo->ServiceTable, UPNP_INFO, API );
)
} else {
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"\nUpnpAddRootDevice: No Eventing Support Found \n" );
)
}
ixmlDocument_free( temp );
@ -579,9 +586,8 @@ UpnpRegisterRootDevice( IN const char *DescUrl,
return UPNP_E_FINISH;
}
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"Inside UpnpRegisterRootDevice \n" );
)
HandleLock();
if( UpnpSdkDeviceRegistered ) {
@ -607,9 +613,8 @@ UpnpRegisterRootDevice( IN const char *DescUrl,
}
HandleTable[*Hnd] = HInfo;
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"Root device URL is %s\n", DescUrl );
)
HInfo->aliasInstalled = 0;
HInfo->HType = HND_DEVICE;
@ -636,12 +641,11 @@ UpnpRegisterRootDevice( IN const char *DescUrl,
return retVal;
}
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"UpnpRegisterRootDevice: Valid Description\n" );
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"UpnpRegisterRootDevice: DescURL : %s\n",
HInfo->DescURL );
)
HInfo->DeviceList =
ixmlDocument_getElementsByTagName( HInfo->DescDocument, "device" );
@ -650,9 +654,8 @@ UpnpRegisterRootDevice( IN const char *DescUrl,
ixmlDocument_free( HInfo->DescDocument );
FreeHandle( *Hnd );
HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_CRITICAL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_CRITICAL, API, __FILE__, __LINE__,
"UpnpRegisterRootDevice: No devices found for RootDevice\n" );
)
return UPNP_E_INVALID_DESC;
}
@ -665,42 +668,37 @@ UpnpRegisterRootDevice( IN const char *DescUrl,
ixmlDocument_free( HInfo->DescDocument );
FreeHandle( *Hnd );
HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_CRITICAL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_CRITICAL, API, __FILE__, __LINE__,
"UpnpRegisterRootDevice: No services found for RootDevice\n" );
)
return UPNP_E_INVALID_DESC;
}
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"UpnpRegisterRootDevice: Gena Check\n" );
)
//*******************************
// GENA SET UP
//*******************************
if( getServiceTable( ( IXML_Node * ) HInfo->DescDocument,
&HInfo->ServiceTable, HInfo->DescURL ) ) {
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"UpnpRegisterRootDevice: GENA Service Table \n" );
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"Here are the known services: \n" );
printServiceTable( &HInfo->ServiceTable, UPNP_INFO, API );
)
} else {
CLIENTONLY( ListDestroy( &HInfo->SsdpSearchList, 0 ) );
FreeHandle( *Hnd );
HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"\nUpnpRegisterRootDevice: Errors retrieving service table \n" );
)
return UPNP_E_INVALID_DESC;
}
UpnpSdkDeviceRegistered = 1;
HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"Exiting RegisterRootDevice Successfully\n" );
)
return UPNP_E_SUCCESS;
@ -753,19 +751,17 @@ UpnpRemoveRootDevice( IN const char *DescURL,
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" );
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"Here are the known services: \n" );
printServiceTable( &HInfo->ServiceTable, UPNP_INFO, API );
)
} else {
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"\nUpnpRemoveRootDevice: No Services Removed\n" );
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"Here are the known services: \n" );
printServiceTable( &HInfo->ServiceTable, UPNP_INFO, API );
)
}
HandleUnlock();
@ -813,9 +809,8 @@ UpnpUnRegisterRootDevice( IN UpnpDevice_Handle Hnd )
}
HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"Inside UpnpUnRegisterRootDevice \n" );
)
#if EXCLUDE_GENA == 0
if( genaUnregisterDevice( Hnd ) != UPNP_E_SUCCESS )
return UPNP_E_INVALID_HANDLE;
@ -856,9 +851,8 @@ UpnpUnRegisterRootDevice( IN UpnpDevice_Handle Hnd )
UpnpSdkDeviceRegistered = 0;
HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"Exiting UpnpUnRegisterRootDevice \n" );
)
return retVal;
@ -1167,9 +1161,8 @@ UpnpRegisterRootDevice2( IN Upnp_DescType descriptionType,
return UPNP_E_FINISH;
}
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"Inside UpnpRegisterRootDevice2 \n" );
)
if( Hnd == NULL || Fun == NULL ) {
return UPNP_E_INVALID_PARAM;
@ -1223,12 +1216,11 @@ UpnpRegisterRootDevice2( IN Upnp_DescType descriptionType,
HInfo->MaxSubscriptions = UPNP_INFINITE;
HInfo->MaxSubscriptionTimeOut = UPNP_INFINITE;
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"UpnpRegisterRootDevice2: Valid Description\n" );
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"UpnpRegisterRootDevice2: DescURL : %s\n",
HInfo->DescURL );
)
HInfo->DeviceList =
ixmlDocument_getElementsByTagName( HInfo->DescDocument, "device" );
@ -1238,9 +1230,8 @@ UpnpRegisterRootDevice2( IN Upnp_DescType descriptionType,
ixmlDocument_free( HInfo->DescDocument );
FreeHandle( *Hnd );
HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"UpnpRegisterRootDevice2: No devices found for RootDevice\n" );
)
return UPNP_E_INVALID_DESC;
}
@ -1254,37 +1245,32 @@ UpnpRegisterRootDevice2( IN Upnp_DescType descriptionType,
ixmlDocument_free( HInfo->DescDocument );
FreeHandle( *Hnd );
HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"UpnpRegisterRootDevice2: No services found for RootDevice\n" );
)
return UPNP_E_INVALID_DESC;
}
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"UpnpRegisterRootDevice2: Gena Check\n" );
)
//*******************************
//GENA SET UP
//*******************************
if( getServiceTable( ( IXML_Node * ) HInfo->DescDocument,
&HInfo->ServiceTable, HInfo->DescURL ) ) {
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"UpnpRegisterRootDevice2: GENA Service Table \n" );
)
} else {
CLIENTONLY( ListDestroy( &HInfo->SsdpSearchList, 0 ) );
FreeHandle( *Hnd );
HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"\nUpnpRegisterRootDevice: Errors retrieving service table \n" );
)
return UPNP_E_INVALID_DESC;
}
UpnpSdkDeviceRegistered = 1;
HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting RegisterRootDevice2 Successfully\n" );
)
return UPNP_E_SUCCESS;
} /****************** End of UpnpRegisterRootDevice2 *********************/
@ -1323,9 +1309,8 @@ UpnpRegisterClient( IN Upnp_FunPtr Fun,
return UPNP_E_FINISH;
}
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpRegisterClient \n" );
)
if( Fun == NULL || Hnd == NULL ) {
return UPNP_E_INVALID_PARAM;
@ -1366,9 +1351,8 @@ UpnpRegisterClient( IN Upnp_FunPtr Fun,
HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpRegisterClient \n" );
)
return UPNP_E_SUCCESS;
@ -1403,9 +1387,8 @@ UpnpUnRegisterClient( IN UpnpClient_Handle Hnd )
return UPNP_E_FINISH;
}
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpUnRegisterClient \n" );
)
HandleLock();
if( !UpnpSdkClientRegistered ) {
HandleUnlock();
@ -1438,9 +1421,8 @@ UpnpUnRegisterClient( IN UpnpClient_Handle Hnd )
FreeHandle( Hnd );
UpnpSdkClientRegistered = 0;
HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpUnRegisterClient \n" );
)
return UPNP_E_SUCCESS;
} /****************** End of UpnpUnRegisterClient *********************/
@ -1483,9 +1465,8 @@ UpnpSendAdvertisement( IN UpnpDevice_Handle Hnd,
return UPNP_E_FINISH;
}
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpSendAdvertisement \n" );
)
HandleLock();
if( GetHandleInfo( Hnd, &SInfo ) != HND_DEVICE ) {
@ -1554,8 +1535,8 @@ UpnpSendAdvertisement( IN UpnpDevice_Handle Hnd,
#endif
HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpSendAdvertisement \n" ); )
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpSendAdvertisement \n" );
return retVal;
@ -1595,9 +1576,8 @@ UpnpSearchAsync( IN UpnpClient_Handle Hnd,
return UPNP_E_FINISH;
}
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpSearchAsync \n" );
)
HandleLock();
if( GetHandleInfo( Hnd, &SInfo ) != HND_CLIENT ) {
@ -1617,9 +1597,8 @@ UpnpSearchAsync( IN UpnpClient_Handle Hnd,
//HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpSearchAsync \n" );
)
return UPNP_E_SUCCESS;
@ -1659,9 +1638,8 @@ UpnpSetMaxSubscriptions( IN UpnpDevice_Handle Hnd,
return UPNP_E_FINISH;
}
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpSetMaxSubscriptions \n" );
)
HandleLock();
if( ( ( MaxSubscriptions != UPNP_INFINITE )
@ -1673,9 +1651,8 @@ UpnpSetMaxSubscriptions( IN UpnpDevice_Handle Hnd,
SInfo->MaxSubscriptions = MaxSubscriptions;
HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpSetMaxSubscriptions \n" );
)
return UPNP_E_SUCCESS;
@ -1710,9 +1687,8 @@ UpnpSetMaxSubscriptionTimeOut( IN UpnpDevice_Handle Hnd,
return UPNP_E_FINISH;
}
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpSetMaxSubscriptionTimeOut \n" );
)
HandleLock();
@ -1726,9 +1702,8 @@ UpnpSetMaxSubscriptionTimeOut( IN UpnpDevice_Handle Hnd,
SInfo->MaxSubscriptionTimeOut = MaxSubscriptionTimeOut;
HandleUnlock();
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpSetMaxSubscriptionTimeOut \n" );
)
return UPNP_E_SUCCESS;
@ -1777,9 +1752,8 @@ UpnpSubscribeAsync( IN UpnpClient_Handle Hnd,
return UPNP_E_FINISH;
}
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpSubscribeAsync \n" );
)
HandleLock();
if( GetHandleInfo( Hnd, &SInfo ) != HND_CLIENT ) {
@ -1820,9 +1794,8 @@ UpnpSubscribeAsync( IN UpnpClient_Handle Hnd,
TPJobSetPriority( &job, MED_PRIORITY );
ThreadPoolAdd( &gSendThreadPool, &job, NULL );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpSubscribeAsync \n" );
)
return UPNP_E_SUCCESS;
@ -1864,9 +1837,8 @@ UpnpSubscribe( IN UpnpClient_Handle Hnd,
return UPNP_E_FINISH;
}
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpSubscribe \n" );
)
HandleLock();
if( GetHandleInfo( Hnd, &SInfo ) != HND_CLIENT ) {
@ -1888,9 +1860,8 @@ UpnpSubscribe( IN UpnpClient_Handle Hnd,
HandleUnlock();
RetVal = genaSubscribe( Hnd, EvtUrl, TimeOut, SubsId );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpSubscribe \n" );
)
return RetVal;
@ -1926,9 +1897,8 @@ UpnpUnSubscribe( IN UpnpClient_Handle Hnd,
return UPNP_E_FINISH;
}
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpUnSubscribe \n" );
)
HandleLock();
if( GetHandleInfo( Hnd, &SInfo ) != HND_CLIENT ) {
@ -1942,9 +1912,8 @@ UpnpUnSubscribe( IN UpnpClient_Handle Hnd,
HandleUnlock();
RetVal = genaUnSubscribe( Hnd, SubsId );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpUnSubscribe \n" );
)
return RetVal;
@ -1987,9 +1956,8 @@ UpnpUnSubscribeAsync( IN UpnpClient_Handle Hnd,
return UPNP_E_FINISH;
}
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpUnSubscribeAsync \n" );
)
HandleLock();
if( GetHandleInfo( Hnd, &SInfo ) != HND_CLIENT ) {
@ -2022,9 +1990,8 @@ UpnpUnSubscribeAsync( IN UpnpClient_Handle Hnd,
TPJobSetPriority( &job, MED_PRIORITY );
ThreadPoolAdd( &gSendThreadPool, &job, NULL );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpUnSubscribeAsync \n" );
)
return UPNP_E_SUCCESS;
@ -2063,9 +2030,8 @@ UpnpRenewSubscription( IN UpnpClient_Handle Hnd,
return UPNP_E_FINISH;
}
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpRenewSubscription \n" );
)
HandleLock();
if( GetHandleInfo( Hnd, &SInfo ) != HND_CLIENT ) {
@ -2083,9 +2049,8 @@ UpnpRenewSubscription( IN UpnpClient_Handle Hnd,
HandleUnlock();
RetVal = genaRenewSubscription( Hnd, SubsId, TimeOut );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpRenewSubscription \n" );
)
return RetVal;
@ -2131,9 +2096,8 @@ UpnpRenewSubscriptionAsync( IN UpnpClient_Handle Hnd,
return UPNP_E_FINISH;
}
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpRenewSubscriptionAsync \n" );
)
HandleLock();
if( GetHandleInfo( Hnd, &SInfo ) != HND_CLIENT ) {
HandleUnlock();
@ -2172,9 +2136,8 @@ UpnpRenewSubscriptionAsync( IN UpnpClient_Handle Hnd,
TPJobSetPriority( &job, MED_PRIORITY );
ThreadPoolAdd( &gSendThreadPool, &job, NULL );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpRenewSubscriptionAsync \n" );
)
return UPNP_E_SUCCESS;
@ -2227,9 +2190,8 @@ UpnpNotify( IN UpnpDevice_Handle Hnd,
return UPNP_E_FINISH;
}
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpNotify \n" );
)
HandleLock();
if( GetHandleInfo( Hnd, &SInfo ) != HND_DEVICE ) {
@ -2253,9 +2215,8 @@ UpnpNotify( IN UpnpDevice_Handle Hnd,
retVal =
genaNotifyAll( Hnd, DevID, ServName, VarName, NewVal, cVariables );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpNotify \n" );
)
return retVal;
@ -2300,9 +2261,8 @@ UpnpNotifyExt( IN UpnpDevice_Handle Hnd,
return UPNP_E_FINISH;
}
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpNotify \n" );
)
HandleLock();
if( GetHandleInfo( Hnd, &SInfo ) != HND_DEVICE ) {
@ -2321,9 +2281,8 @@ UpnpNotifyExt( IN UpnpDevice_Handle Hnd,
HandleUnlock();
retVal = genaNotifyAllExt( Hnd, DevID, ServName, PropSet );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpNotify \n" );
)
return retVal;
@ -2379,9 +2338,8 @@ UpnpAcceptSubscription( IN UpnpDevice_Handle Hnd,
return UPNP_E_FINISH;
}
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpAcceptSubscription \n" );
)
HandleLock();
if( GetHandleInfo( Hnd, &SInfo ) != HND_DEVICE ) {
@ -2410,9 +2368,8 @@ UpnpAcceptSubscription( IN UpnpDevice_Handle Hnd,
genaInitNotify( Hnd, DevID, ServName, VarName, NewVal, cVariables,
SubsId );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpAcceptSubscription \n" );
)
return retVal;
} /***************** End of UpnpAcceptSubscription *********************/
@ -2457,9 +2414,8 @@ UpnpAcceptSubscriptionExt( IN UpnpDevice_Handle Hnd,
return UPNP_E_FINISH;
}
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpAcceptSubscription \n" );
)
HandleLock();
if( GetHandleInfo( Hnd, &SInfo ) != HND_DEVICE ) {
@ -2487,9 +2443,8 @@ UpnpAcceptSubscriptionExt( IN UpnpDevice_Handle Hnd,
HandleUnlock();
retVal = genaInitNotifyExt( Hnd, DevID, ServName, PropSet, SubsId );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpAcceptSubscription \n" );
)
return retVal;
@ -2551,11 +2506,11 @@ UpnpSendAction( IN UpnpClient_Handle Hnd,
return UPNP_E_FINISH;
}
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpSendAction \n" );
)
if(DevUDN_const !=NULL)
DBGONLY(UpnpPrintf(UPNP_ALL,API,__FILE__,__LINE__,"non NULL DevUDN is ignored\n"););
if(DevUDN_const !=NULL) {
UpnpPrintf(UPNP_ALL,API,__FILE__,__LINE__,"non NULL DevUDN is ignored\n");
}
DevUDN_const = NULL;
HandleLock();
@ -2577,9 +2532,8 @@ UpnpSendAction( IN UpnpClient_Handle Hnd,
retVal = SoapSendAction( ActionURL, ServiceType, Action, RespNodePtr );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpSendAction \n" );
)
return retVal;
@ -2634,9 +2588,8 @@ UpnpSendActionEx( IN UpnpClient_Handle Hnd,
return UPNP_E_FINISH;
}
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpSendActionEx \n" );
)
if( Header == NULL ) {
retVal = UpnpSendAction( Hnd, ActionURL_const, ServiceType_const,
@ -2661,9 +2614,8 @@ UpnpSendActionEx( IN UpnpClient_Handle Hnd,
retVal = SoapSendActionEx( ActionURL, ServiceType, Header,
Action, RespNodePtr );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpSendAction \n" );
)
return retVal;
@ -2718,9 +2670,8 @@ UpnpSendActionAsync( IN UpnpClient_Handle Hnd,
return UPNP_E_FINISH;
}
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpSendActionAsync \n" );
)
HandleLock();
if( GetHandleInfo( Hnd, &SInfo ) != HND_CLIENT ) {
@ -2774,9 +2725,8 @@ UpnpSendActionAsync( IN UpnpClient_Handle Hnd,
TPJobSetPriority( &job, MED_PRIORITY );
ThreadPoolAdd( &gSendThreadPool, &job, NULL );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpSendActionAsync \n" );
)
return UPNP_E_SUCCESS;
@ -2833,9 +2783,8 @@ UpnpSendActionExAsync( IN UpnpClient_Handle Hnd,
return UPNP_E_FINISH;
}
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpSendActionExAsync \n" );
)
if( Header == NULL ) {
retVal = UpnpSendActionAsync( Hnd, ActionURL_const,
@ -2912,9 +2861,8 @@ UpnpSendActionExAsync( IN UpnpClient_Handle Hnd,
TPJobSetPriority( &job, MED_PRIORITY );
ThreadPoolAdd( &gSendThreadPool, &job, NULL );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpSendActionAsync \n" );
)
return UPNP_E_SUCCESS;
@ -2956,9 +2904,8 @@ UpnpGetServiceVarStatusAsync( IN UpnpClient_Handle Hnd,
return UPNP_E_FINISH;
}
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpGetServiceVarStatusAsync \n" );
)
HandleLock();
if( GetHandleInfo( Hnd, &SInfo ) != HND_CLIENT ) {
@ -2994,9 +2941,8 @@ UpnpGetServiceVarStatusAsync( IN UpnpClient_Handle Hnd,
ThreadPoolAdd( &gSendThreadPool, &job, NULL );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpGetServiceVarStatusAsync \n" );
)
return UPNP_E_SUCCESS;
@ -3038,9 +2984,8 @@ UpnpGetServiceVarStatus( IN UpnpClient_Handle Hnd,
return UPNP_E_FINISH;
}
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpGetServiceVarStatus \n" );
)
HandleLock();
if( GetHandleInfo( Hnd, &SInfo ) != HND_CLIENT ) {
@ -3060,9 +3005,8 @@ UpnpGetServiceVarStatus( IN UpnpClient_Handle Hnd,
retVal = SoapGetServiceVarStatus( ActionURL, VarName, &StVarPtr );
*StVar = StVarPtr;
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpGetServiceVarStatus \n" );
)
return retVal;
@ -3339,16 +3283,13 @@ UpnpDownloadXmlDoc( const char *url,
ret_code = UpnpDownloadUrlItem( url, &xml_buf, content_type );
if( ret_code != UPNP_E_SUCCESS ) {
DBGONLY( UpnpPrintf( UPNP_CRITICAL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_CRITICAL, API, __FILE__, __LINE__,
"retCode: %d\n", ret_code );
)
return ret_code;
}
if( strncasecmp( content_type, "text/xml", strlen( "text/xml" ) ) ) {
DBGONLY(
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__, "Not text/xml\n" );
)
// Linksys WRT54G router returns
// "CONTENT-TYPE: application/octet-stream".
// Let's be nice to Linksys and try to parse document anyway.
@ -3364,16 +3305,16 @@ UpnpDownloadXmlDoc( const char *url,
free( xml_buf );
if( ret_code != IXML_SUCCESS ) {
DBGONLY( UpnpPrintf( UPNP_CRITICAL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_CRITICAL, API, __FILE__, __LINE__,
"Invalid desc\n" );
)
if( ret_code == IXML_INSUFFICIENT_MEMORY ) {
return UPNP_E_OUTOF_MEMORY;
} else {
return UPNP_E_INVALID_DESC;
}
} else {
DBGONLY( xml_buf = ixmlPrintNode( ( IXML_Node * ) * xmlDoc );
#ifdef DEBUG
xml_buf = ixmlPrintNode( ( IXML_Node * ) * xmlDoc );
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Printing the Parsed xml document \n %s\n",
xml_buf );
@ -3381,7 +3322,8 @@ UpnpDownloadXmlDoc( const char *url,
"****************** END OF Parsed XML Doc *****************\n" );
ixmlFreeDOMString( xml_buf );
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpDownloadXmlDoc\n" ); )
"Exiting UpnpDownloadXmlDoc\n" );
#endif
return UPNP_E_SUCCESS;
}
@ -3410,9 +3352,8 @@ void
UpnpThreadDistribution( struct UpnpNonblockParam *Param )
{
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside UpnpThreadDistribution \n" );
)
switch ( Param->FunName ) {
#if EXCLUDE_GENA == 0
@ -3500,9 +3441,8 @@ free( Param ); break;}
break;
} // end of switch(Param->FunName)
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Exiting UpnpThreadDistribution \n" );
)
} /****************** End of UpnpThreadDistribution *********************/
#endif
@ -3662,26 +3602,20 @@ GetHandleInfo( UpnpClient_Handle Hnd,
struct Handle_Info ** HndInfo )
{
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"GetHandleInfo: Handle is %d\n", Hnd );
)
if( Hnd < 1 || Hnd >= NUM_HANDLE ) {
DBGONLY( UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, API, __FILE__, __LINE__,
"GetHandleInfo : Handle out of range\n" );
)
return UPNP_E_INVALID_HANDLE;
}
if( HandleTable[Hnd] != NULL ) {
*HndInfo = ( struct Handle_Info * )HandleTable[Hnd];
return ( ( struct Handle_Info * )*HndInfo )->HType;
}
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"GetHandleInfo : exiting\n" );
)
return UPNP_E_INVALID_HANDLE;
@ -3703,9 +3637,8 @@ int
FreeHandle( int Upnp_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" );
)
return UPNP_E_INVALID_HANDLE;
}
@ -3736,7 +3669,7 @@ int PrintHandleInfo( IN UpnpClient_Handle Hnd )
struct Handle_Info * HndInfo;
if (HandleTable[Hnd] != NULL) {
HndInfo = HandleTable[Hnd];
DBGONLY(
#ifdef DEBUG
UpnpPrintf(UPNP_ALL, API, __FILE__, __LINE__,
"Printing information for Handle_%d\n", Hnd);
UpnpPrintf(UPNP_ALL, API, __FILE__, __LINE__,
@ -3746,7 +3679,7 @@ int PrintHandleInfo( IN UpnpClient_Handle Hnd )
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"DescURL_%s\n", HndInfo->DescURL );
)
)
#endif
} else {
return UPNP_E_INVALID_HANDLE;
}
@ -3775,12 +3708,10 @@ void printNodes( IXML_Node * tmpRoot, int depth )
NodeType = ixmlNode_getNodeType(ChildNode1);
NodeValue = ixmlNode_getNodeValue(ChildNode1);
NodeName = ixmlNode_getNodeName(ChildNode1);
DBGONLY(
UpnpPrintf(UPNP_ALL, API, __FILE__, __LINE__,
"DEPTH-%2d-IXML_Node Type %d, "
"IXML_Node Name: %s, IXML_Node Value: %s\n",
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.
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" );
)
return UPNP_E_INIT;
}
// Get the interface configuration information...
@ -3850,9 +3780,8 @@ void printNodes( IXML_Node * tmpRoot, int depth )
nResult = ioctl( LocalSock, SIOCGIFCONF, &ifConf );
if( nResult < 0 ) {
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"DiscoverInterfaces: SIOCGIFCONF returned error\n" );
)
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.
strcpy( ifReq.ifr_name, pifReq->ifr_name );
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",
ifReq.ifr_name );
)
}
// Skip loopback, point-to-point and 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 );
DBGONLY( UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
UpnpPrintf( UPNP_ALL, API, __FILE__, __LINE__,
"Inside getlocalhostname : after strncpy %s\n",
out );
)
return UPNP_E_SUCCESS;
#endif
}

View File

@ -116,7 +116,7 @@ UpnpInitLog( )
/***************************************************************************
* Function : UpnpSetLogLevel
*
* Parameters: void
* Parameters: Upnp_LogLevel log_level
*
* Description:
* 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
*
@ -173,64 +209,46 @@ UpnpCloseLog( )
* statement is coming
* Returns: void
***************************************************************************/
DBGONLY( void UpnpPrintf( IN Upnp_LogLevel DLevel,
#ifdef DEBUG
void UpnpPrintf(
IN Upnp_LogLevel DLevel,
IN Dbg_Module Module,
IN const char *DbgFileName,
IN int DbgLineNo,
IN const char *FmtStr,
... ) {
... )
{
va_list ArgList;
if (!DebugAtThisLevel(DLevel, Module)) {
return;
}
ithread_mutex_lock(&GlobalDebugMutex);
va_start(ArgList, FmtStr);
if( g_log_level < DLevel ) return; if( DEBUG_ALL == 0 ) {
switch ( Module ) {
case SSDP:
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;}
if (!DEBUG_TARGET) {
if( DbgFileName ) {
UpnpDisplayFileAndLine(stdout, DbgFileName, DbgLineNo);
}
ithread_mutex_lock( &GlobalDebugMutex ); if( DEBUG_TARGET == 0 ) {
vfprintf(stdout, FmtStr, ArgList);
fflush(stdout);
} else if (DLevel == 0) {
if (DbgFileName) {
UpnpDisplayFileAndLine( stdout, 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 );}
UpnpDisplayFileAndLine(ErrFileHnd, DbgFileName, DbgLineNo);
}
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
* else returns the right file descriptor
***************************************************************************/
DBGONLY( FILE * GetDebugFile( Upnp_LogLevel DLevel, Dbg_Module Module ) {
if( g_log_level < DLevel ) return NULL; if( DEBUG_ALL == 0 ) {
switch ( Module ) {
case SSDP:
if( DEBUG_SSDP == 1 ) break;
else
return NULL; case SOAP:
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;}
#ifdef DEBUG
FILE *GetDebugFile( Upnp_LogLevel DLevel, Dbg_Module Module )
{
FILE *ret;
if (!DebugAtThisLevel(DLevel, Module)) {
ret = NULL;
}
if( DEBUG_TARGET == 0 ) {
return stdout;}
else
{
if( DLevel == 0 ) {
return ErrFileHnd;}
else
{
return InfoFileHnd;}
if (!DEBUG_TARGET) {
ret = stdout;
} else if (DLevel == 0) {
ret = ErrFileHnd;
} else {
ret = InfoFileHnd;
}
return ret;
}
)
#endif
/***************************************************************************
@ -305,17 +303,26 @@ return NULL; default:
* debug statement is coming to the log file
* Returns: void
***************************************************************************/
DBGONLY( void UpnpDisplayFileAndLine( IN FILE * fd,
#ifdef DEBUG
void UpnpDisplayFileAndLine(
IN FILE * fd,
IN const char *DbgFileName,
IN int DbgLineNo ) {
IN int DbgLineNo)
{
int starlength = 66;
const char *lines[2];
char FileAndLine[500]; lines[0] = "DEBUG"; if( DbgFileName ) {
sprintf( FileAndLine, "FILE: %s, LINE: %d", DbgFileName,
DbgLineNo ); lines[1] = FileAndLine;}
UpnpDisplayBanner( fd, lines, 2, starlength ); fflush( fd );}
)
char FileAndLine[500];
lines[0] = "DEBUG";
if (DbgFileName) {
sprintf(FileAndLine,
"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
* Returns: void
***************************************************************************/
DBGONLY( void UpnpDisplayBanner( IN FILE * fd,
#ifdef DEBUG
void UpnpDisplayBanner(
IN FILE * fd,
IN const char **lines,
IN size_t size,
IN int starLength ) {
char *stars = ( char * )malloc( starLength + 1 );
const char *line = NULL;
IN int starLength)
{
int leftMarginLength = starLength / 2 + 1;
int rightMarginLength = starLength / 2 + 1;
char *leftMargin = ( char * )malloc( leftMarginLength );
char *rightMargin = ( char * )malloc( rightMarginLength );
int i = 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 );
const char *line = NULL;
memset( stars, '*', starLength );
stars[starLength] = 0;
memset( leftMargin, 0, leftMarginLength );
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] );
line = lines[i]; while( LineSize > ( starLength - 2 ) ) {
memcpy( currentLine, line, ( starLength - 2 ) );
currentLine[( starLength - 2 )] = 0;
line = lines[i];
while( LineSize > starLengthMinus2 ) {
memcpy( currentLine, line, starLengthMinus2 );
currentLine[starLengthMinus2] = 0;
fprintf( fd, "*%s*\n", currentLine );
LineSize -= ( starLength - 2 ); line += ( starLength - 2 );}
LineSize -= starLengthMinus2;
line += starLengthMinus2;
}
leftMarginLength = (starLengthMinus2 - LineSize)/2;
if( LineSize % 2 == 0 ) {
leftMarginLength = rightMarginLength =
( ( starLength - 2 ) - LineSize ) / 2;}
else
{
leftMarginLength = ( ( starLength - 2 ) - LineSize ) / 2;
rightMarginLength =
( ( starLength - 2 ) - LineSize ) / 2 + 1;}
rightMarginLength = leftMarginLength;
} else {
rightMarginLength = leftMarginLength + 1;
}
memset( leftMargin, ' ', leftMarginLength );
memset( rightMargin, ' ', rightMarginLength );
leftMargin[leftMarginLength] = 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 );
free( currentLine );
free( stars );
free( rightMargin );
free( leftMargin );
free( rightMargin ); free( stars ); free( currentLine );}
)
}
#endif

View File

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

View File

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

View File

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

View File

@ -174,10 +174,8 @@ dispatch_request( IN SOCKINFO * info,
case HTTPMETHOD_NOTIFY:
case HTTPMETHOD_SUBSCRIBE:
case HTTPMETHOD_UNSUBSCRIBE:
DBGONLY( UpnpPrintf
( UPNP_INFO, MSERV, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, MSERV, __FILE__, __LINE__,
"miniserver %d: got GENA msg\n", info->socket );
)
callback = gGenaCallback;
break;
@ -275,10 +273,8 @@ handle_request( void *args )
struct mserv_request_t *request = ( struct mserv_request_t * )args;
int connfd = request->connfd;
DBGONLY( UpnpPrintf
( UPNP_INFO, MSERV, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, MSERV, __FILE__, __LINE__,
"miniserver %d: READING\n", connfd );
)
//parser_request_init( &parser ); ////LEAK_FIX_MK
hmsg = &parser.msg;
@ -295,10 +291,8 @@ handle_request( void *args )
goto error_handler;
}
DBGONLY( UpnpPrintf
( UPNP_INFO, MSERV, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, MSERV, __FILE__, __LINE__,
"miniserver %d: PROCESSING...\n", connfd );
)
// dispatch
http_error_code = dispatch_request( &info, &parser );
if( http_error_code != 0 ) {
@ -316,10 +310,8 @@ handle_request( void *args )
handle_error( &info, http_error_code, major, minor );
}
DBGONLY( UpnpPrintf
( UPNP_INFO, MSERV, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, MSERV, __FILE__, __LINE__,
"miniserver %d: COMPLETE\n", connfd );
)
sock_destroy( &info, SD_BOTH ); //should shutdown completely
httpmsg_destroy( hmsg );
@ -352,10 +344,8 @@ schedule_request_job( IN int connfd,
( struct mserv_request_t * )
malloc( sizeof( struct mserv_request_t ) );
if( request == NULL ) {
DBGONLY( UpnpPrintf
( UPNP_INFO, MSERV, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, MSERV, __FILE__, __LINE__,
"mserv %d: out of memory\n", connfd );
)
shutdown( request->connfd, SD_BOTH );
UpnpCloseSocket( connfd );
return;
@ -370,10 +360,8 @@ schedule_request_job( IN int connfd,
TPJobSetPriority( &job, MED_PRIORITY );
if( ThreadPoolAdd( &gRecvThreadPool, &job, NULL ) != 0 ) {
DBGONLY( UpnpPrintf
( UPNP_INFO, MSERV, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, MSERV, __FILE__, __LINE__,
"mserv %d: cannot schedule request\n", connfd );
)
free( request );
shutdown( connfd, SD_BOTH );
UpnpCloseSocket( connfd );
@ -446,10 +434,8 @@ RunMiniServer( MiniServerSockArray * miniSock )
if( select( maxMiniSock, &rdSet, NULL, &expSet, NULL ) ==
UPNP_SOCKETERROR ) {
DBGONLY( UpnpPrintf
( UPNP_CRITICAL, SSDP, __FILE__, __LINE__,
UpnpPrintf( UPNP_CRITICAL, SSDP, __FILE__, __LINE__,
"Error in select call !!!\n" );
)
continue;
} else {
@ -459,11 +445,9 @@ RunMiniServer( MiniServerSockArray * miniSock )
( struct sockaddr * )&clientAddr,
&clientLen );
if( connectHnd == UPNP_INVALID_SOCKET ) {
DBGONLY( UpnpPrintf
( UPNP_INFO, MSERV, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, MSERV, __FILE__, __LINE__,
"miniserver: Error"
" in accepting connection\n" );
)
continue;
}
schedule_request_job( connectHnd, &clientAddr );
@ -489,24 +473,19 @@ RunMiniServer( MiniServerSockArray * miniSock )
&clientLen );
if( byteReceived > 0 ) {
requestBuf[byteReceived] = '\0';
DBGONLY( UpnpPrintf
( UPNP_INFO, MSERV, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, MSERV, __FILE__, __LINE__,
"Received response !!! %s From host %s \n",
requestBuf,
inet_ntoa( clientAddr.sin_addr ) );
)
DBGONLY( UpnpPrintf
( UPNP_PACKET, MSERV, __FILE__, __LINE__,
requestBuf, inet_ntoa( clientAddr.sin_addr ) );
UpnpPrintf( UPNP_PACKET, MSERV, __FILE__, __LINE__,
"Received multicast packet: \n %s\n",
requestBuf );
)
if( NULL != strstr( requestBuf, "ShutDown" ) )
if( NULL != strstr( requestBuf, "ShutDown" ) ) {
break;
}
}
}
}
}
shutdown( miniServSock, SD_BOTH );
@ -555,10 +534,8 @@ get_port( int sockfd )
}
port = ntohs( sockinfo.sin_port );
DBGONLY( UpnpPrintf
( UPNP_INFO, MSERV, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, MSERV, __FILE__, __LINE__,
"sockfd = %d, .... port = %d\n", sockfd, port );
)
return port;
}
@ -623,16 +600,10 @@ get_miniserver_sockets( MiniServerSockArray * out,
//THIS MAY CAUSE TCP TO BECOME LESS RELIABLE
//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" );
)
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 ) {
shutdown( listenfd, SD_BOTH );
UpnpCloseSocket( listenfd );
@ -665,16 +636,14 @@ get_miniserver_sockets( MiniServerSockArray * out,
}
if( sockError == UPNP_SOCKETERROR ) {
DBGONLY( perror( "mserv start: bind failed" );
)
perror( "mserv start: bind failed" );
shutdown( listenfd, SD_BOTH );
UpnpCloseSocket( listenfd );
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" );
)
success = listen( listenfd, SOMAXCONN );
if( success == UPNP_SOCKETERROR ) {
@ -694,10 +663,9 @@ get_miniserver_sockets( MiniServerSockArray * out,
if( ( miniServerStopSock = socket( AF_INET, SOCK_DGRAM, 0 ) ) ==
UPNP_INVALID_SOCKET ) {
DBGONLY( UpnpPrintf( UPNP_CRITICAL,
UpnpPrintf( UPNP_CRITICAL,
MSERV, __FILE__, __LINE__,
"Error in socket operation !!!\n" );
)
shutdown( listenfd, SD_BOTH );
UpnpCloseSocket( listenfd );
return UPNP_E_OUTOF_SOCKET;
@ -711,10 +679,9 @@ get_miniserver_sockets( MiniServerSockArray * out,
if( bind( miniServerStopSock, ( struct sockaddr * )&serverAddr,
sizeof( serverAddr ) ) == UPNP_SOCKETERROR ) {
DBGONLY( UpnpPrintf( UPNP_CRITICAL,
UpnpPrintf( UPNP_CRITICAL,
MSERV, __FILE__, __LINE__,
"Error in binding localhost!!!\n" );
)
shutdown( listenfd, SD_BOTH );
UpnpCloseSocket( listenfd );
shutdown( miniServerStopSock, SD_BOTH );
@ -877,10 +844,8 @@ StopMiniServer( void )
sock = socket( AF_INET, SOCK_DGRAM, 0 );
if( sock == UPNP_INVALID_SOCKET ) {
DBGONLY( UpnpPrintf
( UPNP_INFO, SSDP, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, SSDP, __FILE__, __LINE__,
"SSDP_SERVER:StopSSDPServer: Error in socket operation !!!\n" );
)
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'.
*
* Return : http_header_t* - Pointer to a header on success; *
* Return : http_header_t* - Pointer to a header on success;
* NULL on failure
*
* Note :
@ -979,8 +979,8 @@ skip_to_end_of_header( INOUT scanner_t * scanner )
* Parameters:
* INOUT scanner_t* scanner ; Scanner Object
* IN char c ; Character to be compared with
* IN xboolean case_sensitive; Flag indicating whether comparison should
* be case sensitive
* IN xboolean case_sensitive; Flag indicating whether
* comparison should be case sensitive
*
* Description: Compares a character to the next char in the scanner;
* 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 );
if( status != PARSE_OK ) {
scanner->cursor = save_pos;
DBGONLY( UpnpPrintf
( UPNP_INFO, HTTP, __FILE__, __LINE__,
"CHUNK COULD NOT BE PARSED\n" ); )
UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"CHUNK COULD NOT BE PARSED\n" );
return status;
}
// 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 ) {
// read method to use chunked transfer encoding
parser->ent_position = ENTREAD_USING_CHUNKED;
DBGONLY( UpnpPrintf
( UPNP_INFO, HTTP, __FILE__, __LINE__,
"Found Chunked Encoding ....\n" ); )
UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"Found Chunked Encoding ....\n" );
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
*
* Returns:
* const char* ptr - Ptr to the HTTP Method *
* const char* ptr - Ptr to the HTTP Method
************************************************************************/
const char *
method_to_str( IN http_method_t method )
@ -2495,40 +2493,38 @@ method_to_str( IN http_method_t method )
* Returns:
* void
************************************************************************/
#ifdef DEBUG
void
print_http_headers( http_message_t * hmsg )
{
ListNode *node;
// NNS: dlist_node *node;
http_header_t *header;
// print start line
if( hmsg->is_request ) {
//printf( "method = %d, version = %d.%d, url = %.*s\n",
// hmsg->method, hmsg->major_version, hmsg->minor_version,
// hmsg->uri.pathquery.size, hmsg->uri.pathquery.buff);
printf( "method = %d, version = %d.%d, url = %.*s\n",
hmsg->method, hmsg->major_version, hmsg->minor_version,
hmsg->uri.pathquery.size, hmsg->uri.pathquery.buff);
} else {
// printf( "resp status = %d, version = %d.%d, status msg = %.*s\n",
// hmsg->status_code, hmsg->major_version, hmsg->minor_version,
// (int)hmsg->status_msg.length, hmsg->status_msg.buf);
printf( "resp status = %d, version = %d.%d, status msg = %.*s\n",
hmsg->status_code, hmsg->major_version, hmsg->minor_version,
(int)hmsg->status_msg.length, hmsg->status_msg.buf);
}
// print headers
node = ListHead( &hmsg->headers );
// NNS: node = dlist_first_node( &hmsg->headers );
while( node != NULL ) {
header = ( http_header_t * ) node->item;
// NNS: header = (http_header_t *)node->data;
//printf( "hdr name: %.*s, value: %.*s\n",
// (int)header->name.length, header->name.buf,
// (int)header->value.length, header->value.buf );
printf( "hdr name: %.*s, value: %.*s\n",
(int)header->name.length, header->name.buf,
(int)header->value.length, header->value.buf );
node = ListNext( &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,
sizeof( struct sockaddr_in ) ) == -1 ) {
#ifdef WIN32
DBGONLY(
UpnpPrintf(UPNP_CRITICAL, HTTP, __FILE__, __LINE__,
"connect error: %d\n", WSAGetLastError());
)
#endif
shutdown( connfd, SD_BOTH );
UpnpCloseSocket( connfd );
@ -226,12 +224,10 @@ http_RecvMessage( IN SOCKINFO * info,
status = parser_append( parser, buf, num_read );
if( status == PARSE_SUCCESS ) {
DBGONLY( UpnpPrintf
( UPNP_INFO, HTTP, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"<<< (RECVD) <<<\n%s\n-----------------\n",
parser->msg.msg.buf );
//print_http_headers( &parser->msg );
)
print_http_headers( &parser->msg );
if( parser->content_length >
( unsigned int )g_maxContentLength ) {
@ -252,12 +248,10 @@ http_RecvMessage( IN SOCKINFO * info,
}
} else if( num_read == 0 ) {
if( ok_on_close ) {
DBGONLY( UpnpPrintf
( UPNP_INFO, HTTP, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"<<< (RECVD) <<<\n%s\n-----------------\n",
parser->msg.msg.buf );
//print_http_headers( &parser->msg );
)
print_http_headers( &parser->msg );
return 0;
} else {
@ -455,11 +449,9 @@ http_SendMessage( IN SOCKINFO * info,
num_written = sock_write( info, file_buf, num_read,
TimeOut );
DBGONLY( UpnpPrintf
( UPNP_INFO, HTTP, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
">>> (SENT) >>>\n%.*s\n------------\n",
( int )num_written, file_buf );
)
//Send error nothing we can do
if( num_written != num_read ) {
@ -485,10 +477,9 @@ http_SendMessage( IN SOCKINFO * info,
num_written = sock_write( info, buf, buf_length, TimeOut );
if( ( size_t ) num_written != buf_length )
goto end;
DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
">>> (SENT) >>>\n%.*s\n------------\n",
( int )buf_length, buf );
)
}
}
}
@ -589,7 +580,6 @@ http_RequestAndResponse( IN uri_type * destination,
* UPNP_E_SUCCESS;
* UPNP_E_INVALID_URL;
*
*
* Note :
************************************************************************/
int
@ -601,10 +591,10 @@ http_Download( IN const char *url_str,
{
int ret_code;
uri_type url;
char *msg_start,
*entity_start,
*hoststr,
*temp;
char *msg_start;
char *entity_start;
char *hoststr;
char *temp;
http_parser_t response;
size_t msg_length;
size_t hostlen;
@ -614,10 +604,8 @@ http_Download( IN const char *url_str,
char *urlPath = alloca( strlen( url_str ) + 1 );
//ret_code = parse_uri( (char*)url_str, strlen(url_str), &url );
DBGONLY( UpnpPrintf
( UPNP_INFO, HTTP, __FILE__, __LINE__, "DOWNLOAD URL : %s\n",
UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__, "DOWNLOAD URL : %s\n",
url_str );
)
ret_code =
http_FixStrUrl( ( char * )url_str, strlen( url_str ), &url );
if( ret_code != UPNP_E_SUCCESS ) {
@ -641,10 +629,8 @@ http_Download( IN const char *url_str,
*temp = '\0';
hostlen = strlen( hoststr );
*temp = '/';
DBGONLY( UpnpPrintf
( UPNP_INFO, HTTP, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"HOSTNAME : %s Length : %"PRIzu"\n", hoststr, hostlen );
)
ret_code = http_MakeMessage(
&request, 1, 1,
@ -653,18 +639,14 @@ http_Download( IN const char *url_str,
"HOST: ",
hoststr, hostlen );
if( ret_code != 0 ) {
DBGONLY( UpnpPrintf
( UPNP_INFO, HTTP, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"HTTP Makemessage failed\n" );
)
membuffer_destroy( &request );
return ret_code;
}
DBGONLY( UpnpPrintf
( UPNP_INFO, HTTP, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"HTTP Buffer:\n %s\n----------END--------\n", request.buf );
)
// get doc msg
ret_code =
http_RequestAndResponse( &url, request.buf, request.length,
@ -676,11 +658,8 @@ http_Download( IN const char *url_str,
return ret_code;
}
DBGONLY( UpnpPrintf
( UPNP_INFO, HTTP, __FILE__, __LINE__, "Response\n" );
)
DBGONLY( print_http_headers( &response.msg );
)
UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__, "Response\n" );
print_http_headers( &response.msg );
// optional content-type
if( content_type ) {
@ -771,13 +750,10 @@ MakePostMessage( const char *url_str,
char *hoststr,
*temp;
DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"DOWNLOAD URL : %s\n", url_str );
)
ret_code =
http_FixStrUrl( ( char * )url_str, strlen( url_str ), url );
if( ret_code != UPNP_E_SUCCESS ) {
return ret_code;
}
@ -799,9 +775,8 @@ MakePostMessage( const char *url_str,
*temp = '\0';
hostlen = strlen( hoststr );
*temp = '/';
DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"HOSTNAME : %s Length : %"PRIzu"\n", hoststr, hostlen );
)
if( contentLength >= 0 ) {
ret_code = http_MakeMessage(
@ -833,17 +808,16 @@ MakePostMessage( const char *url_str,
}
if( ret_code != 0 ) {
DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"HTTP Makemessage failed\n" );
)
membuffer_destroy( request );
return ret_code;
}
DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"HTTP Buffer:\n %s\n" "----------END--------\n",
request->buf );
)
return UPNP_E_SUCCESS;
}
@ -1108,9 +1082,8 @@ MakeGetMessage( const char *url_str,
char *hoststr,
*temp;
DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"DOWNLOAD URL : %s\n", url_str );
)
ret_code =
http_FixStrUrl( ( char * )url_str, strlen( url_str ), url );
@ -1136,9 +1109,8 @@ MakeGetMessage( const char *url_str,
*temp = '\0';
hostlen = strlen( hoststr );
*temp = '/';
DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"HOSTNAME : %s Length : %"PRIzu"\n", hoststr, hostlen );
)
if( proxy_str ) {
querystr = url_str;
@ -1156,17 +1128,16 @@ MakeGetMessage( const char *url_str,
hoststr, hostlen );
if( ret_code != 0 ) {
DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"HTTP Makemessage failed\n" );
)
membuffer_destroy( request );
return ret_code;
}
DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"HTTP Buffer:\n %s\n" "----------END--------\n",
request->buf );
)
return UPNP_E_SUCCESS;
}
@ -1386,11 +1357,9 @@ http_ReadHttpGet( IN void *Handle,
}
} else if( num_read == 0 ) {
if( ok_on_close ) {
DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"<<< (RECVD) <<<\n%s\n-----------------\n",
handle->response.msg.msg.buf );
//print_http_headers( &parser->msg );
)
handle->response.position = POS_COMPLETE;
} else {
// partial msg
@ -1850,31 +1819,26 @@ http_MakeMessage( INOUT membuffer * buf,
va_start( argp, fmt );
while( ( c = *fmt++ ) != 0 ) {
if( c == 's' ) // C string
{
if( c == 's' ) {
// C string
s = ( char * )va_arg( argp, char * );
assert( s );
//DBGONLY(UpnpPrintf(UPNP_ALL,HTTP,__FILE__,__LINE__,"Adding a string : %s\n", s);)
UpnpPrintf(UPNP_ALL,HTTP,__FILE__,__LINE__,"Adding a string : %s\n", s);
if( membuffer_append( buf, s, strlen( s ) ) != 0 ) {
goto error_handler;
}
} else if( c == 'K' ) // Add Chunky header
{
} else if( c == 'K' ) {
// Add Chunky header
if( membuffer_append
( buf, "TRANSFER-ENCODING: chunked\r\n",
strlen( "Transfer-Encoding: chunked\r\n" ) ) != 0 ) {
goto error_handler;
}
} else if( c == 'G' ) // Add Range header
{
} else if( c == 'G' ) {
// Add Range header
struct SendInstruction *RespInstr;
RespInstr =
( struct SendInstruction * )va_arg( argp,
struct SendInstruction
* );
RespInstr = (struct SendInstruction *)
va_arg( argp, struct SendInstruction *);
assert( RespInstr );
// connection header
if( membuffer_append
@ -1882,38 +1846,34 @@ http_MakeMessage( INOUT membuffer * buf,
strlen( RespInstr->RangeHeader ) ) != 0 ) {
goto error_handler;
}
} else if( c == 'b' ) // mem buffer
{
} else if( c == 'b' ) {
// mem buffer
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 );
length = ( size_t ) va_arg( argp, size_t );
if( membuffer_append( buf, s, length ) != 0 ) {
goto error_handler;
}
}
else if( c == 'c' ) // crlf
{
else if( c == 'c' ) {
// crlf
if( membuffer_append( buf, "\r\n", 2 ) != 0 ) {
goto error_handler;
}
}
else if( c == 'd' ) // integer
{
else if( c == 'd' ) {
// integer
num = ( int )va_arg( argp, int );
sprintf( tempbuf, "%"PRIzu, num );
if( membuffer_append( buf, tempbuf, strlen( tempbuf ) ) != 0 ) {
goto error_handler;
}
}
else if( c == 'h' ) // off_t
{
else if( c == 'h' ) {
// off_t
bignum = ( off_t )va_arg( argp, off_t );
sprintf( tempbuf, "%"PRId64, (int64_t)bignum );
@ -1921,9 +1881,8 @@ http_MakeMessage( INOUT membuffer * buf,
goto error_handler;
}
}
else if( c == 't' || c == 'D' ) // date
{
else if( c == 't' || c == 'D' ) {
// date
if( c == 'D' ) {
// header
start_str = "DATE: ";
@ -1947,9 +1906,7 @@ http_MakeMessage( INOUT membuffer * buf,
if( membuffer_append( buf, tempbuf, strlen( tempbuf ) ) != 0 ) {
goto error_handler;
}
}
else if( c == 'C' ) {
} else if( c == 'C' ) {
if( ( http_major_version > 1 ) ||
( http_major_version == 1 && http_minor_version == 1 )
) {
@ -1959,9 +1916,7 @@ http_MakeMessage( INOUT membuffer * buf,
goto error_handler;
}
}
}
else if( c == 'N' ) {
} else if( c == 'N' ) {
// content-length header
bignum = ( off_t )va_arg( argp, off_t );
@ -1972,11 +1927,8 @@ http_MakeMessage( INOUT membuffer * buf,
"CONTENT-LENGTH: ", bignum ) != 0 ) {
goto error_handler;
}
}
else if( c == 'S' || c == 'U' ) {
} else if( c == 'S' || c == 'U' ) {
// SERVER or USER-AGENT header
temp_str = ( c == 'S' ) ? "SERVER: " : "USER-AGENT: ";
get_sdk_info( tempbuf );
if (http_MakeMessage(
@ -1985,34 +1937,25 @@ http_MakeMessage( INOUT membuffer * buf,
temp_str, tempbuf ) != 0 ) {
goto error_handler;
}
}
else if( c == 'X' ) // C string
{
} else if( c == 'X' ) {
// C string
s = ( char * )va_arg( argp, char * );
assert( s );
if( membuffer_append_str( buf, "X-User-Agent: ") != 0 ) {
goto error_handler;
}
if( membuffer_append( buf, s, strlen( s ) ) != 0 ) {
goto error_handler;
}
}
else if( c == 'R' ) {
} else if( c == 'R' ) {
// response start line
// e.g.: 'HTTP/1.1 200 OK'
//
// code
status_code = ( int )va_arg( argp, int );
assert( status_code > 0 );
sprintf( tempbuf, "HTTP/%d.%d %d ",
http_major_version, http_minor_version, status_code );
// str
status_msg = http_get_code_text( status_code );
if (http_MakeMessage(
@ -2022,40 +1965,31 @@ http_MakeMessage( INOUT membuffer * buf,
status_msg ) != 0 ) {
goto error_handler;
}
}
else if( c == 'B' ) {
} else if( c == 'B' ) {
// body of a simple reply
//
status_code = ( int )va_arg( argp, int );
sprintf( tempbuf, "%s%d %s%s",
"<html><body><h1>",
status_code, http_get_code_text( status_code ),
"</h1></body></html>" );
bignum = strlen( tempbuf );
if (http_MakeMessage(
buf, http_major_version, http_minor_version,
"NTcs",
bignum, // content-length
"text/html", // content-type
tempbuf ) != 0 ) // body
{
tempbuf ) != 0 // body
) {
goto error_handler;
}
}
else if( c == 'Q' ) {
} else if( c == 'Q' ) {
// request start line
// GET /foo/bar.html HTTP/1.1\r\n
method = ( http_method_t ) va_arg( argp, http_method_t );
method_str = method_to_str( method );
url_str = ( const char * )va_arg( argp, const char * );
num = ( size_t )va_arg( argp, size_t ); // length of url_str
if (http_MakeMessage(
buf, http_major_version, http_minor_version,
"ssbsdsdc",
@ -2064,20 +1998,15 @@ http_MakeMessage( INOUT membuffer * buf,
" HTTP/", http_major_version, ".", http_minor_version ) != 0 ) {
goto error_handler;
}
}
else if( c == 'q' ) {
} else if( c == 'q' ) {
// request start line and HOST header
method = ( http_method_t ) va_arg( argp, http_method_t );
uri_ptr = ( uri_type * ) va_arg( argp, uri_type * );
assert( uri_ptr );
if( http_FixUrl( uri_ptr, &url ) != 0 ) {
error_code = UPNP_E_INVALID_URL;
goto error_handler;
}
if (http_MakeMessage(
buf, http_major_version, http_minor_version,
"Q" "sbc",
@ -2085,21 +2014,16 @@ http_MakeMessage( INOUT membuffer * buf,
"HOST: ", url.hostport.text.buff, url.hostport.text.size ) != 0 ) {
goto error_handler;
}
}
else if( c == 'T' ) {
} else if( c == 'T' ) {
// content type header
temp_str = ( const char * )va_arg( argp, const char * ); // type/subtype format
if (http_MakeMessage(
buf, http_major_version, http_minor_version,
"ssc",
"CONTENT-TYPE: ", temp_str ) != 0 ) {
goto error_handler;
}
}
else {
} else {
assert( 0 );
}
}
@ -2174,18 +2098,15 @@ MakeGetMessageEx( const char *url_str,
*temp;
do {
DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"DOWNLOAD URL : %s\n", url_str );
)
if( ( errCode = http_FixStrUrl( ( char * )url_str,
strlen( url_str ),
url ) ) != UPNP_E_SUCCESS ) {
strlen( url_str ), url ) ) != UPNP_E_SUCCESS ) {
break;
}
// make msg
membuffer_init( request );
urlPath = alloca( strlen( url_str ) + 1 );
if( !urlPath ) {
errCode = UPNP_E_OUTOF_MEMORY;
@ -2193,9 +2114,7 @@ MakeGetMessageEx( const char *url_str,
}
memset( urlPath, 0, strlen( url_str ) + 1 );
strcpy( urlPath, url_str );
hoststr = strstr( urlPath, "//" );
if( hoststr == NULL ) {
errCode = UPNP_E_INVALID_URL;
@ -2212,11 +2131,9 @@ MakeGetMessageEx( const char *url_str,
*temp = '\0';
hostlen = strlen( hoststr );
*temp = '/';
DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"HOSTNAME : %s Length : %"PRIzu"\n",
hoststr, hostlen );
)
errCode = http_MakeMessage(
request, 1, 1,
@ -2227,18 +2144,17 @@ MakeGetMessageEx( const char *url_str,
pRangeSpecifier );
if( errCode != 0 ) {
DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"HTTP Makemessage failed\n" );
)
membuffer_destroy( request );
return errCode;
}
} while( 0 );
DBGONLY( UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"HTTP Buffer:\n %s\n" "----------END--------\n",
request->buf );
)
return errCode;
}

View File

@ -637,11 +637,11 @@ get_file_info( IN const char *filename,
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",
filename, (long long)info->file_length,
asctime( gmtime( &info->last_modified ) ),
info->is_readable ); )
info->is_readable );
return rc;
}
@ -1586,13 +1586,10 @@ http_RecvPostMessage( http_parser_t * parser,
}
} else if( num_read == 0 ) {
if( ok_on_close ) {
DBGONLY( UpnpPrintf
( UPNP_INFO, HTTP, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
"<<< (RECVD) <<<\n%s\n-----------------\n",
parser->msg.msg.buf );
//print_http_headers( &parser->msg );
)
print_http_headers( &parser->msg );
parser->position = POS_COMPLETE;
} else {
// 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" );
)
membuffer_destroy( &headers );
membuffer_destroy( &filename );

View File

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

View File

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

View File

@ -89,22 +89,23 @@
#define DEFAULT_TIMEOUT 1801
extern ithread_mutex_t GlobalClientSubscribeMutex;
// Lock the subscription
#define SubscribeLock() \
DBGONLY(UpnpPrintf(UPNP_INFO,GENA,__FILE__,__LINE__, \
"Trying Subscribe Lock")); \
UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, \
"Trying Subscribe Lock"); \
ithread_mutex_lock(&GlobalClientSubscribeMutex); \
DBGONLY(UpnpPrintf(UPNP_INFO,GENA,__FILE__,__LINE__,"Subscribe Lock");)
UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, \
"Subscribe Lock");
// Unlock the subscription
#define SubscribeUnlock() \
DBGONLY(UpnpPrintf(UPNP_INFO,GENA,__FILE__,__LINE__, \
"Trying Subscribe UnLock")); \
UpnpPrintf(UPNP_INFO, GENA, __FILE__, __LINE__, \
"Trying Subscribe UnLock"); \
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

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);
DBGONLY(EXTERN_C void print_http_request(http_message
*message,Dbg_Level DLevel,
Dbg_Module Module,char *DbgFileName,
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,
#ifdef DEBUG
EXTERN_C void print_http_request(
http_message *message,
Dbg_Level DLevel,
Dbg_Module Module,
char *DbgFileName,
int DbgLineNo););
DBGONLY(EXTERN_C void print_status_line(http_status *in,
int DbgLineNo);
#else
static inline void print_http_request(
http_message *message,
Dbg_Level DLevel,
Dbg_Module Module,
char *DbgFileName,
int DbgLineNo););
int DbgLineNo) {}
#endif
DBGONLY(EXTERN_C void print_request_line(http_request *in,
Dbg_Level DLevel,
Dbg_Module Module,
char *DbgFileName,int DbgLineNo));
DBGONLY(EXTERN_C void print_uri( uri_type *in,
#ifdef DEBUG
EXTERN_C void print_http_response(
http_message *message,
Dbg_Level DLevel,
Dbg_Module Module,
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

View File

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

View File

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

View File

@ -96,8 +96,16 @@ struct Handle_Info
extern ithread_mutex_t GlobalHndMutex;
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 HandleUnlock() DBGONLY(UpnpPrintf(UPNP_INFO,API,__FILE__,__LINE__,"Trying Unlock")); ithread_mutex_unlock(&GlobalHndMutex); DBGONLY(UpnpPrintf(UPNP_INFO,API,__FILE__,__LINE__,"Unlock"));
#define HandleLock() \
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,
struct Handle_Info **HndInfo);
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
*
* Description : Function useful in debugging for printing a parsed uri.
* Compiled out with DBGONLY macro.
*
* Return : void ;
*
* 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
@ -197,13 +200,16 @@ DBGONLY(void print_uri( uri_type *in);)
* token * in ;
*
* Description : Function useful in debugging for printing a token.
* Compiled out with DBGONLY macro.
*
* Return : void ;
*
* Note :
************************************************************************/
#ifdef DEBUG
void print_token(token *in);
#else
static inline void print_token(token * in) {}
#endif
/************************************************************************
* Function : token_string_casecmp

View File

@ -619,9 +619,8 @@ SoapSendAction( IN char *action_url,
err_code = UPNP_E_OUTOF_MEMORY; // default error
DBGONLY( UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__,
"Inside SoapSendAction():" );
)
// init
membuffer_init( &request );
membuffer_init( &responsename );
@ -642,12 +641,12 @@ SoapSendAction( IN char *action_url,
goto error_handler;
}
DBGONLY( UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__,
"path=%.*s, hostport=%.*s\n",
(int)url.pathquery.size,
url.pathquery.buff,
(int)url.hostport.text.size,
url.hostport.text.buff ); )
url.hostport.text.buff );
xml_start_len = strlen( xml_start );
xml_end_len = strlen( xml_end );
@ -771,9 +770,8 @@ SoapSendActionEx( IN char *action_url,
err_code = UPNP_E_OUTOF_MEMORY; // default error
DBGONLY( UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__,
"Inside SoapSendActionEx():" );
)
// init
membuffer_init( &request );
membuffer_init( &responsename );
@ -799,12 +797,12 @@ SoapSendActionEx( IN char *action_url,
goto error_handler;
}
DBGONLY( UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__,
"path=%.*s, hostport=%.*s\n",
(int)url.pathquery.size,
url.pathquery.buff,
(int)url.hostport.text.size,
url.hostport.text.buff ); )
url.hostport.text.buff );
xml_start_len = strlen( xml_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
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 );
)
*RespNode = NULL;
@ -738,11 +737,11 @@ send_action_response( IN SOCKINFO * info,
xml_response, strlen( xml_response ),
end_body, strlen( end_body ) );
DBGONLY( if( ret_code != 0 ) {
if( ret_code != 0 ) {
UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__,
"Failed to send response: err code = %d\n",
ret_code );}
)
ret_code );
}
err_code = 0;
@ -814,10 +813,9 @@ get_var_name( IN IXML_Document * TempDoc,
Temp = ixmlNode_getNodeValue( VarNode );
linecopy( VarName, Temp );
DBGONLY( UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__,
UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__,
"Received query for variable name %s\n",
VarName );
)
ret_val = 0; // success
@ -878,8 +876,8 @@ handle_query_variable( IN SOCKINFO * info,
// send event
soap_event_callback( UPNP_CONTROL_GET_VAR_REQUEST, &variable, cookie );
DBGONLY( UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__,
"Return from callback for var request\n" ) );
UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__,
"Return from callback for var request\n" );
// validate, and handle result
if( variable.CurrentVal == NULL ) {
@ -968,8 +966,8 @@ handle_invoke_action( IN SOCKINFO * info,
action.ErrCode = UPNP_E_SUCCESS;
action.CtrlPtIPAddr = info->foreign_ip_addr;
DBGONLY( UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__,
"Calling Callback\n" ) );
UpnpPrintf( UPNP_INFO, SOAP, __FILE__, __LINE__,
"Calling Callback\n" );
soap_event_callback( UPNP_CONTROL_ACTION_REQUEST, &action, cookie );

View File

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

View File

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

View File

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

View File

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