White spaces.

git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@240 119443c7-1b9e-41f8-b6fc-b9c35fce742c
This commit is contained in:
Marcelo Roberto Jimenez
2007-11-09 09:49:54 +00:00
parent 0103424b91
commit 43b9760840

View File

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