White spaces.
git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@240 119443c7-1b9e-41f8-b6fc-b9c35fce742c
This commit is contained in:
@@ -36,18 +36,18 @@
|
||||
|
||||
#include "config.h"
|
||||
#ifndef WIN32
|
||||
#include <arpa/inet.h>
|
||||
#include <netinet/in.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/wait.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/time.h>
|
||||
#else
|
||||
#include <winsock2.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <netinet/in.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/wait.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/time.h>
|
||||
#else /* WIN32 */
|
||||
#include <winsock2.h>
|
||||
|
||||
typedef int socklen_t;
|
||||
#define EAFNOSUPPORT 97
|
||||
#endif
|
||||
typedef int socklen_t;
|
||||
#define EAFNOSUPPORT 97
|
||||
#endif /* WIN32 */
|
||||
#include "unixutil.h"
|
||||
#include "ithread.h"
|
||||
|
||||
@@ -88,17 +88,16 @@ static MiniServerCallback gGenaCallback = NULL;
|
||||
static MiniServerState gMServState = MSERV_IDLE;
|
||||
|
||||
/************************************************************************
|
||||
* Function : SetHTTPGetCallback
|
||||
*
|
||||
* Parameters :
|
||||
* MiniServerCallback callback ; - HTTP Callback to be invoked
|
||||
*
|
||||
* Description : Set HTTP Get Callback
|
||||
*
|
||||
* Return : void
|
||||
*
|
||||
* Note :
|
||||
************************************************************************/
|
||||
* Function: SetHTTPGetCallback
|
||||
*
|
||||
* Parameters :
|
||||
* MiniServerCallback callback - HTTP Callback to be invoked
|
||||
*
|
||||
* Description:
|
||||
* Set HTTP Get Callback
|
||||
*
|
||||
* Return: void
|
||||
************************************************************************/
|
||||
void
|
||||
SetHTTPGetCallback( MiniServerCallback callback )
|
||||
{
|
||||
@@ -106,17 +105,16 @@ SetHTTPGetCallback( MiniServerCallback callback )
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* Function : SetSoapCallback
|
||||
*
|
||||
* Parameters :
|
||||
* MiniServerCallback callback ; - SOAP Callback to be invoked
|
||||
*
|
||||
* Description : Set SOAP Callback
|
||||
*
|
||||
* Return : void
|
||||
*
|
||||
* Note :
|
||||
************************************************************************/
|
||||
* Function: SetSoapCallback
|
||||
*
|
||||
* Parameters:
|
||||
* MiniServerCallback callback - SOAP Callback to be invoked
|
||||
*
|
||||
* Description:
|
||||
* Set SOAP Callback
|
||||
*
|
||||
* Return: void
|
||||
************************************************************************/
|
||||
void
|
||||
SetSoapCallback( MiniServerCallback callback )
|
||||
{
|
||||
@@ -124,17 +122,16 @@ SetSoapCallback( MiniServerCallback callback )
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* Function : SetGenaCallback
|
||||
*
|
||||
* Parameters :
|
||||
* MiniServerCallback callback ; - GENA Callback to be invoked
|
||||
*
|
||||
* Description : Set GENA Callback
|
||||
*
|
||||
* Return : void
|
||||
*
|
||||
* Note :
|
||||
************************************************************************/
|
||||
* Function: SetGenaCallback
|
||||
*
|
||||
* Parameters:
|
||||
* MiniServerCallback callback - GENA Callback to be invoked
|
||||
*
|
||||
* Description:
|
||||
* Set GENA Callback
|
||||
*
|
||||
* Return: void
|
||||
************************************************************************/
|
||||
void
|
||||
SetGenaCallback( MiniServerCallback callback )
|
||||
{
|
||||
@@ -142,21 +139,19 @@ SetGenaCallback( MiniServerCallback callback )
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* Function : dispatch_request
|
||||
*
|
||||
* Parameters :
|
||||
* IN SOCKINFO *info ; Socket Information object.
|
||||
* http_parser_t* hparser ; HTTP parser object.
|
||||
*
|
||||
* Description : Based on the type pf message, appropriate callback
|
||||
* is issued
|
||||
*
|
||||
* Return : int ;
|
||||
* 0 - On Success
|
||||
* HTTP_INTERNAL_SERVER_ERROR - Callback is NULL
|
||||
*
|
||||
* Note :
|
||||
************************************************************************/
|
||||
* Function : dispatch_request
|
||||
*
|
||||
* Parameters :
|
||||
* IN SOCKINFO *info - Socket Information object.
|
||||
* http_parser_t* hparser - HTTP parser object.
|
||||
*
|
||||
* Description :
|
||||
* Based on the type pf message, appropriate callback is issued
|
||||
*
|
||||
* Return: int
|
||||
* 0 - On Success
|
||||
* HTTP_INTERNAL_SERVER_ERROR - Callback is NULL
|
||||
************************************************************************/
|
||||
static int
|
||||
dispatch_request( IN SOCKINFO * info,
|
||||
http_parser_t * hparser )
|
||||
@@ -200,21 +195,19 @@ dispatch_request( IN SOCKINFO * info,
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* Function : handle_error
|
||||
*
|
||||
* Parameters :
|
||||
*
|
||||
* IN SOCKINFO *info ; Socket Inforamtion Object
|
||||
* int http_error_code ; HTTP Error Code
|
||||
* int major ; Major Version Number
|
||||
* int minor ; Minor Version Number
|
||||
*
|
||||
* Description : Send Error Message
|
||||
*
|
||||
* Return : void;
|
||||
*
|
||||
* Note :
|
||||
************************************************************************/
|
||||
* Function: handle_error
|
||||
*
|
||||
* Parameters:
|
||||
* IN SOCKINFO *info - Socket Inforamtion Object
|
||||
* int http_error_code - HTTP Error Code
|
||||
* int major - Major Version Number
|
||||
* int minor - Minor Version Number
|
||||
*
|
||||
* Description:
|
||||
* Send Error Message
|
||||
*
|
||||
* Return: void
|
||||
************************************************************************/
|
||||
static UPNP_INLINE void
|
||||
handle_error( IN SOCKINFO * info,
|
||||
int http_error_code,
|
||||
@@ -225,18 +218,17 @@ handle_error( IN SOCKINFO * info,
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* Function : free_handle_request_arg
|
||||
*
|
||||
* Parameters :
|
||||
* void *args ; Request Message to be freed
|
||||
*
|
||||
* Description : Free memory assigned for handling request and unitial-
|
||||
* -ize socket functionality
|
||||
*
|
||||
* Return : void
|
||||
*
|
||||
* Note :
|
||||
************************************************************************/
|
||||
* Function: free_handle_request_arg
|
||||
*
|
||||
* Parameters:
|
||||
* void *args ; Request Message to be freed
|
||||
*
|
||||
* Description:
|
||||
* Free memory assigned for handling request and unitialize socket
|
||||
* functionality
|
||||
*
|
||||
* Return: void
|
||||
************************************************************************/
|
||||
static void
|
||||
free_handle_request_arg( void *args )
|
||||
{
|
||||
@@ -248,17 +240,16 @@ free_handle_request_arg( void *args )
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* Function : handle_request
|
||||
*
|
||||
* Parameters :
|
||||
* void *args ; Request Message to be handled
|
||||
*
|
||||
* Description : Receive the request and dispatch it for handling
|
||||
*
|
||||
* Return : void
|
||||
*
|
||||
* Note :
|
||||
************************************************************************/
|
||||
* Function: handle_request
|
||||
*
|
||||
* Parameters:
|
||||
* void *args - Request Message to be handled
|
||||
*
|
||||
* Description:
|
||||
* Receive the request and dispatch it for handling
|
||||
*
|
||||
* Return: void
|
||||
************************************************************************/
|
||||
static void
|
||||
handle_request( void *args )
|
||||
{
|
||||
@@ -319,20 +310,18 @@ handle_request( void *args )
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* Function : schedule_request_job
|
||||
*
|
||||
* Parameters :
|
||||
* IN int connfd ; Socket Descriptor on which connection is accepted
|
||||
* IN struct sockaddr_in* clientAddr ; Clients Address information
|
||||
*
|
||||
* Description : Initilize the thread pool to handle a request.
|
||||
* Sets priority for the job and adds the job to the thread pool
|
||||
*
|
||||
*
|
||||
* Return : void
|
||||
*
|
||||
* Note :
|
||||
************************************************************************/
|
||||
* Function: schedule_request_job
|
||||
*
|
||||
* Parameters:
|
||||
* IN int connfd - Socket Descriptor on which connection is accepted
|
||||
* IN struct sockaddr_in* clientAddr - Clients Address information
|
||||
*
|
||||
* Description:
|
||||
* Initilize the thread pool to handle a request.
|
||||
* Sets priority for the job and adds the job to the thread pool
|
||||
*
|
||||
* Return: void
|
||||
************************************************************************/
|
||||
static UPNP_INLINE void
|
||||
schedule_request_job( IN int connfd,
|
||||
IN struct sockaddr_in *clientAddr )
|
||||
@@ -371,32 +360,29 @@ schedule_request_job( IN int connfd,
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* Function : RunMiniServer
|
||||
*
|
||||
* Parameters :
|
||||
* MiniServerSockArray *miniSock ; Socket Array
|
||||
*
|
||||
* Description : Function runs the miniserver. The MiniServer accepts a
|
||||
* new request and schedules a thread to handle the new request.
|
||||
* Checks for socket state and invokes appropriate read and shutdown
|
||||
* actions for the Miniserver and SSDP sockets
|
||||
*
|
||||
* Return : void
|
||||
*
|
||||
* Note :
|
||||
************************************************************************/
|
||||
* Function: RunMiniServer
|
||||
*
|
||||
* Parameters:
|
||||
* MiniServerSockArray *miniSock - Socket Array
|
||||
*
|
||||
* Description:
|
||||
* Function runs the miniserver. The MiniServer accepts a
|
||||
* new request and schedules a thread to handle the new request.
|
||||
* Checks for socket state and invokes appropriate read and shutdown
|
||||
* actions for the Miniserver and SSDP sockets
|
||||
*
|
||||
* Return: void
|
||||
************************************************************************/
|
||||
static void
|
||||
RunMiniServer( MiniServerSockArray * miniSock )
|
||||
{
|
||||
struct sockaddr_in clientAddr;
|
||||
socklen_t clientLen;
|
||||
SOCKET miniServSock,
|
||||
connectHnd;
|
||||
SOCKET miniServSock;
|
||||
SOCKET connectHnd;
|
||||
SOCKET miniServStopSock;
|
||||
SOCKET ssdpSock;
|
||||
|
||||
CLIENTONLY( SOCKET ssdpReqSock;
|
||||
)
|
||||
CLIENTONLY( SOCKET ssdpReqSock; )
|
||||
|
||||
fd_set expSet;
|
||||
fd_set rdSet;
|
||||
@@ -406,27 +392,21 @@ RunMiniServer( MiniServerSockArray * miniSock )
|
||||
|
||||
miniServSock = miniSock->miniServerSock;
|
||||
miniServStopSock = miniSock->miniServerStopSock;
|
||||
|
||||
ssdpSock = miniSock->ssdpSock;
|
||||
|
||||
CLIENTONLY( ssdpReqSock = miniSock->ssdpReqSock;
|
||||
);
|
||||
CLIENTONLY( ssdpReqSock = miniSock->ssdpReqSock; );
|
||||
|
||||
gMServState = MSERV_RUNNING;
|
||||
maxMiniSock = max( miniServSock, miniServStopSock );
|
||||
maxMiniSock = max( maxMiniSock, ( SOCKET ) ( ssdpSock ) );
|
||||
|
||||
CLIENTONLY( maxMiniSock =
|
||||
max( maxMiniSock, ( SOCKET ) ( ssdpReqSock ) ) );
|
||||
|
||||
++maxMiniSock;
|
||||
|
||||
while( TRUE ) {
|
||||
FD_ZERO( &rdSet );
|
||||
FD_ZERO( &expSet );
|
||||
|
||||
FD_SET( miniServStopSock, &expSet );
|
||||
|
||||
FD_SET( miniServSock, &rdSet );
|
||||
FD_SET( miniServStopSock, &rdSet );
|
||||
FD_SET( ssdpSock, &rdSet );
|
||||
@@ -438,7 +418,6 @@ RunMiniServer( MiniServerSockArray * miniSock )
|
||||
"Error in select call !!!\n" );
|
||||
continue;
|
||||
} else {
|
||||
|
||||
if( FD_ISSET( miniServSock, &rdSet ) ) {
|
||||
clientLen = sizeof( struct sockaddr_in );
|
||||
connectHnd = accept( miniServSock,
|
||||
@@ -453,17 +432,15 @@ RunMiniServer( MiniServerSockArray * miniSock )
|
||||
schedule_request_job( connectHnd, &clientAddr );
|
||||
}
|
||||
//ssdp
|
||||
CLIENTONLY( if( FD_ISSET( ssdpReqSock, &rdSet ) ) {
|
||||
|
||||
readFromSSDPSocket( ssdpReqSock );}
|
||||
)
|
||||
|
||||
if( FD_ISSET( ssdpSock, &rdSet ) ) {
|
||||
CLIENTONLY(
|
||||
if( FD_ISSET( ssdpReqSock, &rdSet ) ) {
|
||||
readFromSSDPSocket( ssdpReqSock );
|
||||
}
|
||||
)
|
||||
if( FD_ISSET( ssdpSock, &rdSet ) ) {
|
||||
readFromSSDPSocket( ssdpSock );
|
||||
}
|
||||
|
||||
}
|
||||
if( FD_ISSET( miniServStopSock, &rdSet ) ) {
|
||||
|
||||
clientLen = sizeof( struct sockaddr_in );
|
||||
memset( ( char * )&clientAddr, 0,
|
||||
sizeof( struct sockaddr_in ) );
|
||||
@@ -479,7 +456,6 @@ RunMiniServer( MiniServerSockArray * miniSock )
|
||||
UpnpPrintf( UPNP_PACKET, MSERV, __FILE__, __LINE__,
|
||||
"Received multicast packet: \n %s\n",
|
||||
requestBuf );
|
||||
|
||||
if( NULL != strstr( requestBuf, "ShutDown" ) ) {
|
||||
break;
|
||||
}
|
||||
@@ -502,23 +478,21 @@ RunMiniServer( MiniServerSockArray * miniSock )
|
||||
gMServState = MSERV_IDLE;
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* Function : get_port
|
||||
*
|
||||
* Parameters :
|
||||
* int sockfd ; Socket Descriptor
|
||||
*
|
||||
* Description : Returns port to which socket, sockfd, is bound.
|
||||
*
|
||||
* Return : int,
|
||||
* -1 on error; check errno
|
||||
* > 0 means port number
|
||||
*
|
||||
* Note :
|
||||
************************************************************************/
|
||||
* Function: get_port
|
||||
*
|
||||
* Parameters:
|
||||
* int sockfd - Socket Descriptor
|
||||
*
|
||||
* Description:
|
||||
* Returns port to which socket, sockfd, is bound.
|
||||
*
|
||||
* Return: int
|
||||
* -1 on error; check errno
|
||||
* > 0 means port number
|
||||
************************************************************************/
|
||||
static int
|
||||
get_port( int sockfd )
|
||||
{
|
||||
@@ -541,28 +515,28 @@ get_port( int sockfd )
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* Function : get_miniserver_sockets
|
||||
*
|
||||
* Parameters :
|
||||
* MiniServerSockArray *out ; Socket Array
|
||||
* unsigned short listen_port ; port on which the server is listening
|
||||
* for incoming connections
|
||||
*
|
||||
* Description : Creates a STREAM socket, binds to INADDR_ANY and
|
||||
* listens for incoming connecttions. Returns the actual port which
|
||||
* the sockets sub-system returned.
|
||||
* Also creates a DGRAM socket, binds to the loop back address and
|
||||
* returns the port allocated by the socket sub-system.
|
||||
*
|
||||
* Return : int :
|
||||
* UPNP_E_OUTOF_SOCKET - Failed to create a socket
|
||||
* UPNP_E_SOCKET_BIND - Bind() failed
|
||||
* UPNP_E_LISTEN - Listen() failed
|
||||
* UPNP_E_INTERNAL_ERROR - Port returned by the socket layer is < 0
|
||||
* UPNP_E_SUCCESS - Success
|
||||
*
|
||||
* Note :
|
||||
************************************************************************/
|
||||
* Function: get_miniserver_sockets
|
||||
*
|
||||
* Parameters:
|
||||
* MiniServerSockArray *out - Socket Array
|
||||
* unsigned short listen_port - port on which the server is
|
||||
* listening for incoming connections
|
||||
*
|
||||
* Description:
|
||||
* Creates a STREAM socket, binds to INADDR_ANY and listens for
|
||||
* incoming connecttions. Returns the actual port which the sockets
|
||||
* sub-system returned.
|
||||
*
|
||||
* Also creates a DGRAM socket, binds to the loop back address and
|
||||
* returns the port allocated by the socket sub-system.
|
||||
*
|
||||
* Return: int
|
||||
* UPNP_E_OUTOF_SOCKET - Failed to create a socket
|
||||
* UPNP_E_SOCKET_BIND - Bind() failed
|
||||
* UPNP_E_LISTEN - Listen() failed
|
||||
* UPNP_E_INTERNAL_ERROR - Port returned by the socket layer is < 0
|
||||
* UPNP_E_SUCCESS - Success
|
||||
************************************************************************/
|
||||
int
|
||||
get_miniserver_sockets( MiniServerSockArray * out,
|
||||
unsigned short listen_port )
|
||||
@@ -708,25 +682,25 @@ get_miniserver_sockets( MiniServerSockArray * out,
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* Function : StartMiniServer
|
||||
*
|
||||
* Parameters :
|
||||
* unsigned short listen_port ; Port on which the server listens for
|
||||
* incoming connections
|
||||
*
|
||||
* Description : Initialize the sockets functionality for the
|
||||
* Miniserver. Initialize a thread pool job to run the MiniServer
|
||||
* and the job to the thread pool. If listen port is 0, port is
|
||||
* dynamically picked
|
||||
*
|
||||
* Use timer mechanism to start the MiniServer, failure to meet the
|
||||
* allowed delay aborts the attempt to launch the MiniServer.
|
||||
*
|
||||
* Return : int ;
|
||||
* Actual port socket is bound to - On Success:
|
||||
* A negative number UPNP_E_XXX - On Error
|
||||
* Note :
|
||||
************************************************************************/
|
||||
* Function: StartMiniServer
|
||||
*
|
||||
* Parameters :
|
||||
* unsigned short listen_port - Port on which the server listens for
|
||||
* incoming connections
|
||||
*
|
||||
* Description:
|
||||
* Initialize the sockets functionality for the
|
||||
* Miniserver. Initialize a thread pool job to run the MiniServer
|
||||
* and the job to the thread pool. If listen port is 0, port is
|
||||
* dynamically picked
|
||||
*
|
||||
* Use timer mechanism to start the MiniServer, failure to meet the
|
||||
* allowed delay aborts the attempt to launch the MiniServer.
|
||||
*
|
||||
* Return: int
|
||||
* Actual port socket is bound to - On Success
|
||||
* A negative number UPNP_E_XXX - On Error
|
||||
************************************************************************/
|
||||
int
|
||||
StartMiniServer( unsigned short listen_port )
|
||||
{
|
||||
@@ -814,19 +788,18 @@ StartMiniServer( unsigned short listen_port )
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* Function : StopMiniServer
|
||||
*
|
||||
* Parameters :
|
||||
* void ;
|
||||
*
|
||||
* Description : Stop and Shutdown the MiniServer and free socket
|
||||
* resources.
|
||||
*
|
||||
* Return : int ;
|
||||
* Always returns 0
|
||||
*
|
||||
* Note :
|
||||
************************************************************************/
|
||||
* Function: StopMiniServer
|
||||
*
|
||||
* Parameters:
|
||||
* void
|
||||
*
|
||||
* Description:
|
||||
* Stop and Shutdown the MiniServer and free socket
|
||||
* resources.
|
||||
*
|
||||
* Return: int
|
||||
* Always returns 0
|
||||
************************************************************************/
|
||||
int
|
||||
StopMiniServer( void )
|
||||
{
|
||||
@@ -864,3 +837,4 @@ StopMiniServer( void )
|
||||
UpnpCloseSocket( sock );
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user