Some rework of http_SendMessage(), no change in functionality. Mostly white spaces.

git-svn-id: https://pupnp.svn.sourceforge.net/svnroot/pupnp/trunk@246 119443c7-1b9e-41f8-b6fc-b9c35fce742c
This commit is contained in:
Marcelo Roberto Jimenez 2007-11-13 04:14:17 +00:00
parent f42bbb6dc2
commit 851cfbc4db
2 changed files with 1039 additions and 1035 deletions

View File

@ -70,8 +70,10 @@
#include "sock.h"
#include "webserver.h"
#define DOSOCKET_READ 1
#define DOSOCKET_WRITE 0
const int CHUNK_HEADER_SIZE = 10;
const int CHUNK_TAIL_SIZE = 10;
/************************************************************************
* Function: http_FixUrl
@ -80,7 +82,8 @@
* IN uri_type* url; URL to be validated and fixed
* OUT uri_type* fixed_url; URL after being fixed.
*
* Description: Validates URL
* Description:
* Validates URL
*
* Returns:
* UPNP_E_INVALID_URL
@ -110,6 +113,7 @@ http_FixUrl( IN uri_type * url,
return UPNP_E_SUCCESS;
}
/************************************************************************
* Function: http_FixStrUrl
*
@ -118,7 +122,8 @@ http_FixUrl( IN uri_type * url,
* IN int urlstrlen ; Length of the character string
* OUT uri_type* fixed_url ; Fixed and corrected URL
*
* Description: Parses URL and then validates URL
* Description:
* Parses URL and then validates URL
*
* Returns:
* UPNP_E_INVALID_URL
@ -138,6 +143,7 @@ http_FixStrUrl( IN char *urlstr,
return http_FixUrl( &url, fixed_url );
}
/************************************************************************
* Function: http_Connect
*
@ -145,8 +151,8 @@ http_FixStrUrl( IN char *urlstr,
* IN uri_type* destination_url; URL containing destination information
* OUT uri_type *url; Fixed and corrected URL
*
* Description: Gets destination address from URL and then connects to the
* remote end
* Description:
* Gets destination address from URL and then connects to the remote end
*
* Returns:
* socket descriptor on sucess
@ -180,19 +186,21 @@ http_Connect( IN uri_type * destination_url,
return connfd;
}
/************************************************************************
* Function: http_RecvMessage
*
* Parameters:
* IN SOCKINFO *info; Socket information object
* OUT http_parser_t* parser, HTTP parser object
* OUT http_parser_t* parser; HTTP parser object
* IN http_method_t request_method; HTTP request method
* IN OUT int* timeout_secs; time out
* OUT int* http_error_code; HTTP error code returned
*
* Description: Get the data on the socket and take actions based on the
* read data to modify the parser objects buffer. If an error is reported
* while parsing the data, the error code is passed in the http_errr_code
* Description:
* Get the data on the socket and take actions based on the read data
* to modify the parser objects buffer. If an error is reported while
* parsing the data, the error code is passed in the http_errr_code
* parameter
*
* Returns:
@ -266,6 +274,7 @@ http_RecvMessage( IN SOCKINFO * info,
}
}
/************************************************************************
* Function: http_SendMessage
*
@ -274,7 +283,8 @@ http_RecvMessage( IN SOCKINFO * info,
* IN OUT int * TimeOut ; time out value
* IN const char* fmt, ... Pattern format to take actions upon
*
* Description: Sends a message to the destination based on the
* Description:
* Sends a message to the destination based on the
* IN const char* fmt parameter
* fmt types:
* 'f': arg = const char * file name
@ -297,22 +307,19 @@ http_SendMessage( IN SOCKINFO * info,
IN const char *fmt,
... )
{
#define CHUNK_HEADER_SIZE 10
#define CHUNK_TAIL_SIZE 10
char c;
char *buf = NULL;
size_t buf_length;
char *filename = NULL;
FILE *Fp;
int num_read,
num_written;
int num_read;
int num_written;
off_t amount_to_be_read = 0;
va_list argp;
char *file_buf = NULL,
*ChunkBuf = NULL;
char *file_buf = NULL;
char *ChunkBuf = NULL;
struct SendInstruction *Instr = NULL;
char Chunk_Header[10];
char Chunk_Header[CHUNK_HEADER_SIZE];
int RetVal = 0;
// 10 byte allocated for chunk header.
@ -322,44 +329,40 @@ http_SendMessage( IN SOCKINFO * info,
while( ( c = *fmt++ ) != 0 ) {
if( c == 'I' ) {
Instr = ( struct SendInstruction * )
va_arg( argp, struct SendInstruction * );
Instr = va_arg(argp, struct SendInstruction *);
assert( Instr );
if( Instr->ReadSendSize >= 0 )
if( Instr->ReadSendSize >= 0 ) {
amount_to_be_read = Instr->ReadSendSize;
else
} else {
amount_to_be_read = Data_Buf_Size;
if( amount_to_be_read < WEB_SERVER_BUF_SIZE )
Data_Buf_Size = amount_to_be_read;
ChunkBuf = ( char * )malloc( Data_Buf_Size +
CHUNK_HEADER_SIZE +
CHUNK_TAIL_SIZE );
if( !ChunkBuf )
return UPNP_E_OUTOF_MEMORY;
file_buf = ChunkBuf + 10;
}
if( c == 'f' ) { // file name
if( amount_to_be_read < WEB_SERVER_BUF_SIZE ) {
Data_Buf_Size = amount_to_be_read;
}
filename = ( char * )va_arg( argp, char * );
ChunkBuf = (char *)malloc(
Data_Buf_Size + CHUNK_HEADER_SIZE + CHUNK_TAIL_SIZE);
if( !ChunkBuf ) {
return UPNP_E_OUTOF_MEMORY;
}
if( Instr && Instr->IsVirtualFile )
file_buf = ChunkBuf + CHUNK_HEADER_SIZE;
} else if( c == 'f' ) {
// file name
filename = va_arg(argp, char *);
if( Instr && Instr->IsVirtualFile ) {
Fp = (virtualDirCallback.open)( filename, UPNP_READ );
else
} else {
Fp = fopen( filename, "rb" );
}
if( Fp == NULL ) {
free( ChunkBuf );
return UPNP_E_FILE_READ_ERROR;
}
assert( Fp );
if( Instr && Instr->IsRangeActive && Instr->IsVirtualFile ) {
if( virtualDirCallback.seek( Fp, Instr->RangeOffset,
SEEK_CUR ) != 0 ) {
@ -375,26 +378,14 @@ http_SendMessage( IN SOCKINFO * info,
while( amount_to_be_read ) {
if( Instr ) {
if( amount_to_be_read >= Data_Buf_Size ) {
if( Instr->IsVirtualFile )
num_read = virtualDirCallback.read( Fp,
file_buf,
Data_Buf_Size );
else
num_read = fread( file_buf, 1, Data_Buf_Size,
Fp );
int n = (amount_to_be_read >= Data_Buf_Size) ?
Data_Buf_Size : amount_to_be_read;
if( Instr->IsVirtualFile ) {
num_read = virtualDirCallback.read( Fp, file_buf, n );
} else {
if( Instr->IsVirtualFile )
num_read = virtualDirCallback.read( Fp,
file_buf,
amount_to_be_read );
else
num_read = fread( file_buf, 1,
amount_to_be_read, Fp );
num_read = fread( file_buf, 1, n, Fp );
}
amount_to_be_read = amount_to_be_read - num_read;
if( Instr->ReadSendSize < 0 ) {
// read until close
amount_to_be_read = Data_Buf_Size;
@ -403,12 +394,11 @@ http_SendMessage( IN SOCKINFO * info,
num_read = fread( file_buf, 1, Data_Buf_Size, Fp );
}
if( num_read == 0 ) // EOF so no more to send.
{
if( num_read == 0 ) {
// EOF so no more to send.
if( Instr && Instr->IsChunkActive ) {
num_written = sock_write( info, "0\r\n\r\n",
strlen( "0\r\n\r\n" ),
TimeOut );
char *str = "0\r\n\r\n";
num_written = sock_write(info, str, strlen(str), TimeOut);
} else {
RetVal = UPNP_E_FILE_READ_ERROR;
}
@ -432,47 +422,41 @@ http_SendMessage( IN SOCKINFO * info,
// on the top of the buffer.
//file_buf[num_read+strlen(Chunk_Header)] = NULL;
//printf("Sending %s\n",file_buf-strlen(Chunk_Header));
num_written = sock_write( info,
file_buf -
strlen( Chunk_Header ),
num_read +
strlen( Chunk_Header ) + 2,
TimeOut );
num_written = sock_write(
info, file_buf - strlen( Chunk_Header ),
num_read + strlen( Chunk_Header ) + 2, TimeOut );
if( num_written !=
num_read + ( int )strlen( Chunk_Header )
+ 2 ) {
goto Cleanup_File; //Send error nothing we can do.
num_read + ( int )strlen( Chunk_Header ) + 2 ) {
// Send error nothing we can do.
goto Cleanup_File;
}
} else {
// write data
num_written = sock_write( info, file_buf, num_read,
TimeOut );
num_written = sock_write( info, file_buf, num_read, TimeOut );
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 ) {
goto Cleanup_File;
}
}
} //While
} // while
Cleanup_File:
va_end( argp );
if( Instr && Instr->IsVirtualFile )
if( Instr && Instr->IsVirtualFile ) {
virtualDirCallback.close( Fp );
else
} else {
fclose( Fp );
}
free( ChunkBuf );
return RetVal;
} else if( c == 'b' ) { // memory buffer
buf = ( char * )va_arg( argp, char * );
buf_length = ( size_t ) va_arg( argp, size_t );
} else if( c == 'b' ) {
// memory buffer
buf = va_arg(argp, char *);
buf_length = va_arg(argp, size_t);
if( buf_length > 0 ) {
num_written = sock_write( info, buf, buf_length, TimeOut );
UpnpPrintf( UPNP_INFO, HTTP, __FILE__, __LINE__,
@ -480,11 +464,12 @@ http_SendMessage( IN SOCKINFO * info,
"%.*s\nbuf_length=%d, num_written=%d\n"
"------------\n",
(int)buf_length, buf, (int)buf_length, num_written );
if( ( size_t ) num_written != buf_length )
if( (size_t)num_written != buf_length ) {
goto end;
}
}
}
}
end:
va_end( argp );
@ -492,6 +477,7 @@ http_SendMessage( IN SOCKINFO * info,
return 0;
}
/************************************************************************
* Function: http_RequestAndResponse
*
@ -504,7 +490,8 @@ http_SendMessage( IN SOCKINFO * info,
* IN int timeout_secs; time out value
* OUT http_parser_t* response; Parser object to receive the repsonse
*
* Description: Initiates socket, connects to the destination, sends a
* Description:
* Initiates socket, connects to the destination, sends a
* request and waits for the response from the remote end
*
* Returns:
@ -564,25 +551,25 @@ http_RequestAndResponse( IN uri_type * destination,
return ret_code;
}
/************************************************************************
* Function: http_Download
*
* Parameters:
* IN const char* url_str: String as a URL
* IN int timeout_secs: time out value
* OUT char** document: buffer to store the document extracted
* IN const char* url_str; String as a URL
* IN int timeout_secs; time out value
* OUT char** document; buffer to store the document extracted
* from the donloaded message.
* OUT int* doc_length: length of the extracted document
* OUT char* content_type: Type of content
* OUT int* doc_length; length of the extracted document
* OUT char* content_type; Type of content
*
* Description : Download the document message and extract the document
* Description:
* Download the document message and extract the document
* from the message.
*
* Return : int;
* UPNP_E_SUCCESS;
* UPNP_E_INVALID_URL;
*
* Note :
* Return: int
* UPNP_E_SUCCESS
* UPNP_E_INVALID_URL
************************************************************************/
int
http_Download( IN const char *url_str,
@ -684,8 +671,8 @@ http_Download( IN const char *url_str,
if( ( *doc_length = ( int )response.msg.entity.length ) == 0 ) {
// 0-length msg
*document = NULL;
} else if( response.msg.status_code == HTTP_OK ) //LEAK_FIX_MK
{
} else if( response.msg.status_code == HTTP_OK ) {
//LEAK_FIX_MK
// copy entity
entity_start = response.msg.entity.buf; // what we want
msg_length = response.msg.msg.length; // save for posterity
@ -727,12 +714,13 @@ typedef struct HTTPPOSTHANDLE {
* Parameters:
* const char *url_str; String as a URL
* membuffer *request; Buffer containing the request
* uri_type *url ; URI object containing the scheme, path
* query token, etc.
* uri_type *url; URI object containing the scheme,
* path query token, etc.
* int contentLength; length of content
* const char *contentType; Type of content
*
* Description: Makes the message for the HTTP POST message
* Description:
* Makes the message for the HTTP POST message
*
* Returns:
* UPNP_E_INVALID_URL
@ -834,15 +822,14 @@ MakePostMessage( const char *url_str,
* IN unsigned int *size: Size of the data to be sent.
* IN int timeout: time out value
*
* Description : Formats data if format used is UPNP_USING_CHUNKED.
* Description:
* Formats data if format used is UPNP_USING_CHUNKED.
* Writes data on the socket connected to the peer.
*
* Return : int ;
* Return: int
* UPNP_E_SUCCESS - On Success
* UPNP_E_INVALID_PARAM - Invalid Parameter
* -1 - On Socket Error.
*
* Note :
************************************************************************/
int
http_WriteHttpPost( IN void *Handle,
@ -864,17 +851,18 @@ http_WriteHttpPost( IN void *Handle,
if( handle->contentLength == UPNP_USING_CHUNKED ) {
if( ( *size ) ) {
int tempSize = 0;
tempbuf = ( char * )malloc(
*size + CHUNK_HEADER_SIZE + CHUNK_TAIL_SIZE );
if ( tempbuf == NULL) {
return UPNP_E_OUTOF_MEMORY;
}
tempbuf =
( char * )malloc( ( *size ) + CHUNK_HEADER_SIZE +
CHUNK_TAIL_SIZE );
if ( tempbuf == NULL) return UPNP_E_OUTOF_MEMORY;
sprintf( tempbuf, "%x\r\n", ( *size ) ); //begin chunk
// begin chunk
sprintf( tempbuf, "%x\r\n", ( *size ) );
tempSize = strlen( tempbuf );
memcpy( tempbuf + tempSize, buf, ( *size ) );
memcpy( tempbuf + tempSize + ( *size ), "\r\n", 2 ); //end of chunk
memcpy( tempbuf + tempSize + ( *size ), "\r\n", 2 );
// end of chunk
tempbufSize = tempSize + ( *size ) + 2;
freeTempbuf = 1;
}
@ -903,20 +891,19 @@ http_WriteHttpPost( IN void *Handle,
* Function: http_CloseHttpPost
*
* Parameters:
* IN void *Handle : Handle to the http post object
* IN OUT int *httpStatus : HTTP status returned on receiving a
* IN void *Handle; Handle to the http post object
* IN OUT int *httpStatus; HTTP status returned on receiving a
* response message
* IN int timeout : time out value
* IN int timeout; time out value
*
* Description : Sends remaining data if using UPNP_USING_CHUNKED
* Description:
* Sends remaining data if using UPNP_USING_CHUNKED
* format. Receives any more messages. Destroys socket and any socket
* associated memory. Frees handle associated with the HTTP POST msg.
*
* Return : int ;
* UPNP_E_SUCCESS - On Sucess ;
* UPNP_E_INVALID_PARAM - Invalid Parameter;
*
* Note :
* Return: int
* UPNP_E_SUCCESS - On Sucess
* UPNP_E_INVALID_PARAM - Invalid Parameter
************************************************************************/
int
http_CloseHttpPost( IN void *Handle,
@ -957,25 +944,24 @@ http_CloseHttpPost( IN void *Handle,
* Function: http_OpenHttpPost
*
* Parameters:
* IN const char *url_str : String as a URL
* IN OUT void **Handle : Pointer to buffer to store HTTP
* IN const char *url_str; String as a URL
* IN OUT void **Handle; Pointer to buffer to store HTTP
* post handle
* IN const char *contentType : Type of content
* IN int contentLength : length of content
* IN int timeout : time out value
* IN const char *contentType; Type of content
* IN int contentLength; length of content
* IN int timeout; time out value
*
* Description : Makes the HTTP POST message, connects to the peer,
* Description:
* Makes the HTTP POST message, connects to the peer,
* sends the HTTP POST request. Adds the post handle to buffer of
* such handles
*
* Return : int;
* UPNP_E_SUCCESS - On Sucess ;
* UPNP_E_INVALID_PARAM - Invalid Paramter ;
* UPNP_E_OUTOF_MEMORY ;
* UPNP_E_SOCKET_ERROR ;
* UPNP_E_SOCKET_CONNECT ;
*
* Note :
* UPNP_E_SUCCESS - On Sucess
* UPNP_E_INVALID_PARAM - Invalid Parameter
* UPNP_E_OUTOF_MEMORY
* UPNP_E_SOCKET_ERROR
* UPNP_E_SOCKET_CONNECT
************************************************************************/
int
http_OpenHttpPost( IN const char *url_str,
@ -1063,7 +1049,8 @@ typedef struct HTTPGETHANDLE {
* uri_type *url ; URI object containing the scheme, path
* query token, etc.
*
* Description: Makes the message for the HTTP GET method
* Description:
* Makes the message for the HTTP GET method
*
* Returns:
* UPNP_E_INVALID_URL
@ -1153,16 +1140,15 @@ MakeGetMessage( const char *url_str,
* IN OUT int *timeout_secs; time out value
* IN OUT int *http_error_code; HTTP errror code returned
*
* Description : Parses already exiting data. If not complete reads more
* Description:
* Parses already exiting data. If not complete reads more
* data on the connected socket. The read data is then parsed. The
* same methid is carried out for headers.
*
* Return : int ;
* Return: int
* PARSE_OK - On Success
* PARSE_FAILURE - Failure to parse data correctly
* UPNP_E_BAD_HTTPMSG - Socker read() returns an error
*
* Note :
************************************************************************/
int
ReadResponseLineAndHeaders( IN SOCKINFO * info,
@ -1273,22 +1259,21 @@ ReadResponseLineAndHeaders( IN SOCKINFO * info,
* Function: http_ReadHttpGet
*
* Parameters:
* IN void *Handle : Handle to the HTTP get object
* IN OUT char *buf : Buffer to get the read and parsed data
* IN OUT unsigned int *size : Size of the buffer passed
* IN int timeout : time out value
* IN void *Handle; Handle to the HTTP get object
* IN OUT char *buf; Buffer to get the read and parsed data
* IN OUT unsigned int *size; Size of the buffer passed
* IN int timeout; time out value
*
* Description : Parses already existing data, then gets new data.
* Description:
* Parses already existing data, then gets new data.
* Parses and extracts information from the new data.
*
* Return : int ;
* UPNP_E_SUCCESS - On Sucess ;
* UPNP_E_INVALID_PARAM - Invalid Parameter;
* UPNP_E_BAD_RESPONSE ;
* UPNP_E_BAD_HTTPMSG ;
* UPNP_E_CANCELED ;
*
* Note :
* Return: int
* UPNP_E_SUCCESS - On Sucess
* UPNP_E_INVALID_PARAM - Invalid Parameter
* UPNP_E_BAD_RESPONSE
* UPNP_E_BAD_HTTPMSG
* UPNP_E_CANCELED
************************************************************************/
int
http_ReadHttpGet( IN void *Handle,
@ -1398,18 +1383,16 @@ http_ReadHttpGet( IN void *Handle,
* Function: http_HttpGetProgress
*
* Parameters:
* IN void *Handle : Handle to the HTTP get object
* OUT unsigned int *length : Buffer to get the read and parsed data
* OUT unsigned int *total : Size of tge buffer passed
* IN void *Handle; Handle to the HTTP get object
* OUT unsigned int *length; Buffer to get the read and parsed data
* OUT unsigned int *total; Size of tge buffer passed
*
* Description : Extracts information from the Handle to the HTTP get
* object.
* Description:
* Extracts information from the Handle to the HTTP get object.
*
* Return : int ;
* UPNP_E_SUCCESS - On Sucess ;
* UPNP_E_INVALID_PARAM - Invalid Parameter;
*
* Note :
* Return: int
* UPNP_E_SUCCESS - On Sucess
* UPNP_E_INVALID_PARAM - Invalid Parameter
************************************************************************/
int http_HttpGetProgress( IN void *Handle,
OUT unsigned int *length,
@ -1431,13 +1414,12 @@ int http_HttpGetProgress( IN void *Handle,
* Parameters:
* IN void *Handle; Handle to HTTP get object
*
* Description : Set the cancel flag of the HttpGet handle
* Description:
* Set the cancel flag of the HttpGet handle
*
* Return : int ;
* Return: int
* UPNP_E_SUCCESS - On Success
* UPNP_E_INVALID_PARAM - Invalid Parameter
*
* Note :
************************************************************************/
int
http_CancelHttpGet( IN void *Handle )
@ -1460,14 +1442,13 @@ http_CancelHttpGet( IN void *Handle )
* Parameters:
* IN void *Handle; Handle to HTTP get object
*
* Description : Clears the handle allocated for the HTTP GET operation
* Description:
* Clears the handle allocated for the HTTP GET operation
* Clears socket states and memory allocated for socket operations.
*
* Return : int ;
* Return: int
* UPNP_E_SUCCESS - On Success
* UPNP_E_INVALID_PARAM - Invalid Parameter
*
* Note :
************************************************************************/
int
http_CloseHttpGet( IN void *Handle )
@ -1498,19 +1479,17 @@ http_CloseHttpGet( IN void *Handle )
* response message
* IN int timeout: time out value
*
* Description : Makes the HTTP GET message, connects to the peer,
* Description:
* Makes the HTTP GET message, connects to the peer,
* sends the HTTP GET request, gets the response and parses the
* response.
*
* Return : int;
* UPNP_E_SUCCESS - On Success ;
* UPNP_E_INVALID_PARAM - Invalid Paramters ;
* UPNP_E_OUTOF_MEMORY ;
* UPNP_E_SOCKET_ERROR ;
* UPNP_E_BAD_RESPONSE ;
*
* Note :
*
* Return: int
* UPNP_E_SUCCESS - On Success
* UPNP_E_INVALID_PARAM - Invalid Paramters
* UPNP_E_OUTOF_MEMORY
* UPNP_E_SOCKET_ERROR
* UPNP_E_BAD_RESPONSE
************************************************************************/
int
http_OpenHttpGet( IN const char *url_str,
@ -1527,30 +1506,27 @@ http_OpenHttpGet( IN const char *url_str,
* Function: http_OpenHttpGetProxy
*
* Parameters:
* IN const char *url_str : String as a URL
* IN const char *proxy_str : String as a URL
* IN OUT void **Handle : Pointer to buffer to store HTTP
* IN const char *url_str; String as a URL
* IN const char *proxy_str; String as a URL
* IN OUT void **Handle; Pointer to buffer to store HTTP
* post handle
* IN OUT char **contentType : Type of content
* OUT int *contentLength : length of content
* OUT int *httpStatus : HTTP status returned on receiving a
* IN OUT char **contentType; Type of content
* OUT int *contentLength; length of content
* OUT int *httpStatus; HTTP status returned on receiving a
* response message
* IN int timeout: time out value
*
* Description : Makes the HTTP GET message, connects to the peer,
* sends the HTTP GET request, gets the response and parses the
* response.
* Description:
* Makes the HTTP GET message, connects to the peer,
* sends the HTTP GET request, gets the response and parses the response.
* If a proxy URL is defined then the connection is made there.
*
* Return : int;
* UPNP_E_SUCCESS - On Success ;
* UPNP_E_INVALID_PARAM - Invalid Paramters ;
* UPNP_E_OUTOF_MEMORY ;
* UPNP_E_SOCKET_ERROR ;
* UPNP_E_BAD_RESPONSE ;
*
* Note :
*
* Return: int
* UPNP_E_SUCCESS - On Success
* UPNP_E_INVALID_PARAM - Invalid Paramters
* UPNP_E_OUTOF_MEMORY
* UPNP_E_SOCKET_ERROR
* UPNP_E_BAD_RESPONSE
************************************************************************/
int
http_OpenHttpGetProxy( IN const char *url_str,
@ -1685,22 +1661,21 @@ http_OpenHttpGetProxy( IN const char *url_str,
* Function: http_SendStatusResponse
*
* Parameters:
* IN SOCKINFO *info : Socket information object
* IN int http_status_code : error code returned while making
* IN SOCKINFO *info; Socket information object
* IN int http_status_code; error code returned while making
* or sending the response message
* IN int request_major_version : request major version
* IN int request_minor_version : request minor version
* IN int request_major_version; request major version
* IN int request_minor_version; request minor version
*
* Description : Generate a response message for the status query and
* send the status response.
* Description:
* Generate a response message for the status query and send the
* status response.
*
* Return : int;
* Return: int
* 0 -- success
* UPNP_E_OUTOF_MEMORY
* UPNP_E_SOCKET_WRITE
* UPNP_E_TIMEDOUT
*
* Note :
************************************************************************/
int
http_SendStatusResponse( IN SOCKINFO * info,
@ -1736,23 +1711,26 @@ http_SendStatusResponse( IN SOCKINFO * info,
return ret;
}
/************************************************************************
* Function: http_MakeMessage
*
* Parameters:
* INOUT membuffer* buf : buffer with the contents of the
* INOUT membuffer* buf; buffer with the contents of the
* message
* IN int http_major_version : HTTP major version
* IN int http_minor_version : HTTP minor version
* IN const char* fmt : Pattern format
* ... :
* IN int http_major_version; HTTP major version
* IN int http_minor_version; HTTP minor version
* IN const char* fmt; Pattern format
* ...;
*
* Description : Generate an HTTP message based on the format that is
* specified in the input parameters.
* Description:
* Generate an HTTP message based on the format that is specified
* in the input parameters.
*
* fmt types:
* 'B': arg = int status_code
* appends content-length, content-type and HTML body for given code
* appends content-length, content-type and HTML body
* for given code
* 'b': arg1 = const char* buf;
* arg2 = size_t buf_length memory ptr
* 'C': (no args) appends a HTTP CONNECTION: close header
@ -1778,12 +1756,10 @@ http_SendStatusResponse( IN SOCKINFO * info,
* 'U': (no args) appends HTTP USER-AGENT: header
* 'X': arg = const char useragent; "redsonic" HTTP X-User-Agent: useragent
*
* Return : int;
* Return: int
* 0 - On Success
* UPNP_E_OUTOF_MEMORY
* UPNP_E_INVALID_URL;
*
* Note :
* UPNP_E_INVALID_URL
************************************************************************/
int
http_MakeMessage( INOUT membuffer * buf,
@ -2038,21 +2014,20 @@ error_handler:
return error_code;
}
/************************************************************************
* Function: http_CalcResponseVersion
*
* Parameters:
* IN int request_major_vers : Request major version
* IN int request_minor_vers : Request minor version
* OUT int* response_major_vers : Response mojor version
* OUT int* response_minor_vers : Response minor version
* IN int request_major_vers; Request major version
* IN int request_minor_vers; Request minor version
* OUT int* response_major_vers; Response mojor version
* OUT int* response_minor_vers; Response minor version
*
* Description : Calculate HTTP response versions based on the request
* versions.
* Description:
* Calculate HTTP response versions based on the request versions.
*
* Return: void
*
* Note :
************************************************************************/
void
http_CalcResponseVersion( IN int request_major_vers,
@ -2080,7 +2055,8 @@ http_CalcResponseVersion( IN int request_major_vers,
* uri_type *url; URI object containing the scheme, path
* query token, etc.
*
* Description: Makes the message for the HTTP GET method
* Description:
* Makes the message for the HTTP GET method
*
* Returns:
* UPNP_E_INVALID_URL
@ -2167,28 +2143,26 @@ MakeGetMessageEx( const char *url_str,
* Function: http_OpenHttpGetEx
*
* Parameters:
* IN const char *url_str : String as a URL
* IN OUT void **Handle : Pointer to buffer to store HTTP
* IN const char *url_str; String as a URL
* IN OUT void **Handle; Pointer to buffer to store HTTP
* post handle
* IN OUT char **contentType : Type of content
* OUT int *contentLength : length of content
* OUT int *httpStatus : HTTP status returned on receiving a
* IN OUT char **contentType; Type of content
* OUT int *contentLength; length of content
* OUT int *httpStatus; HTTP status returned on receiving a
* response message
* IN int timeout : time out value
* IN int timeout; time out value
*
* Description : Makes the HTTP GET message, connects to the peer,
* Description:
* Makes the HTTP GET message, connects to the peer,
* sends the HTTP GET request, gets the response and parses the
* response.
*
* Return : int;
* UPNP_E_SUCCESS - On Success ;
* UPNP_E_INVALID_PARAM - Invalid Paramters ;
* UPNP_E_OUTOF_MEMORY ;
* UPNP_E_SOCKET_ERROR ;
* UPNP_E_BAD_RESPONSE ;
*
* Note :
*
* Return: int
* UPNP_E_SUCCESS - On Success
* UPNP_E_INVALID_PARAM - Invalid Paramters
* UPNP_E_OUTOF_MEMORY
* UPNP_E_SOCKET_ERROR
* UPNP_E_BAD_RESPONSE
************************************************************************/
int
http_OpenHttpGetEx( IN const char *url_str,
@ -2335,19 +2309,18 @@ http_OpenHttpGetEx( IN const char *url_str,
return errCode;
}
/************************************************************************
* Function: get_sdk_info
*
* Parameters:
* OUT char *info : buffer to store the operating system
* information
* OUT char *info; buffer to store the operating system information
*
* Description : Returns the server information for the operating
* system
* Description:
* Returns the server information for the operating system
*
* Return : UPNP_INLINE void
*
* Note :
* Return:
* UPNP_INLINE void
************************************************************************/
// 'info' should have a size of at least 100 bytes
void
@ -2356,11 +2329,18 @@ get_sdk_info( OUT char *info )
#ifdef WIN32
OSVERSIONINFO versioninfo;
versioninfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
if (GetVersionEx(&versioninfo)!=0)
sprintf( info, "%d.%d.%d %d/%s, UPnP/1.0, Portable SDK for UPnP devices/"PACKAGE_VERSION"\r\n",
versioninfo.dwMajorVersion, versioninfo.dwMinorVersion, versioninfo.dwBuildNumber, versioninfo.dwPlatformId, versioninfo.szCSDVersion );
else
if (GetVersionEx(&versioninfo)!=0) {
sprintf( info,
"%d.%d.%d %d/%s, UPnP/1.0, Portable SDK for UPnP devices/"PACKAGE_VERSION"\r\n",
versioninfo.dwMajorVersion,
versioninfo.dwMinorVersion,
versioninfo.dwBuildNumber,
versioninfo.dwPlatformId,
versioninfo.szCSDVersion );
} else {
*info = '\0';
}
#else
int ret_code;
struct utsname sys_info;
@ -2369,9 +2349,10 @@ get_sdk_info( OUT char *info )
if( ret_code == -1 ) {
*info = '\0';
}
sprintf( info, "%s/%s, UPnP/1.0, Portable SDK for UPnP devices/"
PACKAGE_VERSION "\r\n",
sys_info.sysname, sys_info.release );
sprintf( info,
"%s/%s, UPnP/1.0, Portable SDK for UPnP devices/"PACKAGE_VERSION "\r\n",
sys_info.sysname,
sys_info.release );
#endif
}

View File

@ -56,7 +56,8 @@ http_CancelHttpGet( IN void *Handle );
* IN uri_type* url; URL to be validated and fixed
* OUT uri_type* fixed_url; URL after being fixed.
*
* Description: Validates URL
* Description:
* Validates URL
*
* Returns:
* UPNP_E_INVALID_URL
@ -64,6 +65,7 @@ http_CancelHttpGet( IN void *Handle );
************************************************************************/
int http_FixUrl( IN uri_type* url, OUT uri_type* fixed_url );
/************************************************************************
* Function: http_FixStrUrl
*
@ -72,7 +74,8 @@ int http_FixUrl( IN uri_type* url, OUT uri_type* fixed_url );
* IN int urlstrlen ; Length of the character string
* OUT uri_type* fixed_url ; Fixed and corrected URL
*
* Description: Parses URL and then validates URL
* Description:
* Parses URL and then validates URL
*
* Returns:
* UPNP_E_INVALID_URL
@ -88,8 +91,8 @@ int http_FixStrUrl( IN char* urlstr, IN int urlstrlen, OUT uri_type* fixed_url )
* IN uri_type* destination_url; URL containing destination information
* OUT uri_type *url; Fixed and corrected URL
*
* Description: Gets destination address from URL and then connects to the
* remote end
* Description:
* Gets destination address from URL and then connects to the remote end
*
* Returns:
* socket descriptor on sucess
@ -98,19 +101,21 @@ int http_FixStrUrl( IN char* urlstr, IN int urlstrlen, OUT uri_type* fixed_url )
************************************************************************/
int http_Connect( IN uri_type* destination_url, OUT uri_type *url );
/************************************************************************
* Function: http_RecvMessage
*
* Parameters:
* IN SOCKINFO *info; Socket information object
* OUT http_parser_t* parser, HTTP parser object
* OUT http_parser_t* parser; HTTP parser object
* IN http_method_t request_method; HTTP request method
* IN OUT int* timeout_secs; time out
* OUT int* http_error_code; HTTP error code returned
*
* Description: Get the data on the socket and take actions based on the
* read data to modify the parser objects buffer. If an error is reported
* while parsing the data, the error code is passed in the http_errr_code
* Description:
* Get the data on the socket and take actions based on the read data
* to modify the parser objects buffer. If an error is reported while
* parsing the data, the error code is passed in the http_errr_code
* parameter
*
* Returns:
@ -131,7 +136,8 @@ int http_RecvMessage( IN SOCKINFO *info, OUT http_parser_t* parser,
* IN OUT int * TimeOut ; time out value
* IN const char* fmt, ... Pattern format to take actions upon
*
* Description: Sends a message to the destination based on the
* Description:
* Sends a message to the destination based on the
* IN const char* fmt parameter
* fmt types:
* 'f': arg = const char * file name
@ -148,9 +154,12 @@ int http_RecvMessage( IN SOCKINFO *info, OUT http_parser_t* parser,
* UPNP_E_FILE_READ_ERROR
* UPNP_E_SUCCESS
************************************************************************/
int http_SendMessage( IN SOCKINFO *info, IN OUT int* timeout_secs,
int http_SendMessage(
IN SOCKINFO *info,
IN OUT int* timeout_secs,
IN const char* fmt, ... );
/************************************************************************
* Function: http_RequestAndResponse
*
@ -163,7 +172,8 @@ int http_SendMessage( IN SOCKINFO *info, IN OUT int* timeout_secs,
* IN int timeout_secs; time out value
* OUT http_parser_t* response; Parser object to receive the repsonse
*
* Description: Initiates socket, connects to the destination, sends a
* Description:
* Initiates socket, connects to the destination, sends a
* request and waits for the response from the remote end
*
* Returns:
@ -172,12 +182,15 @@ int http_SendMessage( IN SOCKINFO *info, IN OUT int* timeout_secs,
* Error Codes returned by http_SendMessage
* Error Codes returned by http_RecvMessage
************************************************************************/
int http_RequestAndResponse( IN uri_type* destination,
IN const char* request, IN size_t request_length,
int http_RequestAndResponse(
IN uri_type* destination,
IN const char* request,
IN size_t request_length,
IN http_method_t req_method,
IN int timeout_secs,
OUT http_parser_t* response );
/************************************************************************
* return codes:
* 0 -- success
@ -190,30 +203,31 @@ int http_RequestAndResponse( IN uri_type* destination,
* UPNP_E_SOCKET_WRITE
************************************************************************/
/************************************************************************
* Function: http_Download
*
* Parameters:
* IN const char* url_str : String as a URL
* IN int timeout_secs : time out value
* OUT char** document : buffer to store the document extracted
* IN const char* url_str; String as a URL
* IN int timeout_secs; time out value
* OUT char** document; buffer to store the document extracted
* from the donloaded message.
* OUT int* doc_length : length of the extracted document
* OUT char* content_type : Type of content
* OUT int* doc_length; length of the extracted document
* OUT char* content_type; Type of content
*
* Description : Download the document message and extract the document
* Description:
* Download the document message and extract the document
* from the message.
*
* Return : int;
* UPNP_E_SUCCESS;
* UPNP_E_INVALID_URL;
*
*
* Note :
* Return: int
* UPNP_E_SUCCESS
* UPNP_E_INVALID_URL
************************************************************************/
int http_Download( IN const char* url,
int http_Download(
IN const char* url,
IN int timeout_secs,
OUT char** document, OUT int* doc_length,
OUT char** document,
OUT int* doc_length,
OUT char* content_type );
@ -227,67 +241,66 @@ int http_Download( IN const char* url,
* IN unsigned int *size: Size of the data to be sent.
* IN int timeout: time out value
*
* Description : Formats data if format used is UPNP_USING_CHUNKED.
* Description:
* Formats data if format used is UPNP_USING_CHUNKED.
* Writes data on the socket connected to the peer.
*
* Return : int ;
* Return: int
* UPNP_E_SUCCESS - On Success
* UPNP_E_INVALID_PARAM - Invalid Parameter
* -1 - On Socket Error.
*
* Note :
************************************************************************/
int http_WriteHttpPost(IN void *Handle,
IN char *buf,
IN unsigned int *size,
IN int timeout);
/************************************************************************
* Function: http_CloseHttpPost
*
* Parameters:
* IN void *Handle : Handle to the http post object
* IN OUT int *httpStatus : HTTP status returned on receiving a
* IN void *Handle; Handle to the http post object
* IN OUT int *httpStatus; HTTP status returned on receiving a
* response message
* IN int timeout : time out value
* IN int timeout; time out value
*
* Description : Sends remaining data if using UPNP_USING_CHUNKED
* Description:
* Sends remaining data if using UPNP_USING_CHUNKED
* format. Receives any more messages. Destroys socket and any socket
* associated memory. Frees handle associated with the HTTP POST msg.
*
* Return : int ;
* UPNP_E_SUCCESS - On Sucess ;
* UPNP_E_INVALID_PARAM - Invalid Parameter;
*
* Note :
* Return: int
* UPNP_E_SUCCESS - On Sucess
* UPNP_E_INVALID_PARAM - Invalid Parameter
************************************************************************/
int http_CloseHttpPost(IN void *Handle,
IN OUT int *httpStatus,
IN int timeout);
/************************************************************************
* Function: http_OpenHttpPost
*
* Parameters:
* IN const char *url_str : String as a URL
* IN OUT void **Handle : Pointer to buffer to store HTTP
* IN const char *url_str; String as a URL
* IN OUT void **Handle; Pointer to buffer to store HTTP
* post handle
* IN const char *contentType : Type of content
* IN int contentLength : length of content
* IN int timeout : time out value
* IN const char *contentType; Type of content
* IN int contentLength; length of content
* IN int timeout; time out value
*
* Description : Makes the HTTP POST message, connects to the peer,
* Description:
* Makes the HTTP POST message, connects to the peer,
* sends the HTTP POST request. Adds the post handle to buffer of
* such handles
*
* Return : int;
* UPNP_E_SUCCESS - On Sucess ;
* UPNP_E_INVALID_PARAM - Invalid Paramter ;
* UPNP_E_OUTOF_MEMORY ;
* UPNP_E_SOCKET_ERROR ;
* UPNP_E_SOCKET_CONNECT ;
*
* Note :
* UPNP_E_SUCCESS - On Sucess
* UPNP_E_INVALID_PARAM - Invalid Parameter
* UPNP_E_OUTOF_MEMORY
* UPNP_E_SOCKET_ERROR
* UPNP_E_SOCKET_CONNECT
************************************************************************/
int http_OpenHttpPost(IN const char *url_str,
IN OUT void **Handle,
@ -295,69 +308,72 @@ int http_OpenHttpPost(IN const char *url_str,
IN int contentLength,
IN int timeout);
/************************************************************************
* Function: http_ReadHttpGet
*
* Parameters:
* IN void *Handle : Handle to the HTTP get object
* IN OUT char *buf : Buffer to get the read and parsed data
* IN OUT unsigned int *size : Size of tge buffer passed
* IN int timeout : time out value
* IN void *Handle; Handle to the HTTP get object
* IN OUT char *buf; Buffer to get the read and parsed data
* IN OUT unsigned int *size; Size of the buffer passed
* IN int timeout; time out value
*
* Description : Parses already existing data, then gets new data.
* Description:
* Parses already existing data, then gets new data.
* Parses and extracts information from the new data.
*
* Return : int ;
* UPNP_E_SUCCESS - On Sucess ;
* UPNP_E_INVALID_PARAM - Invalid Parameter;
* UPNP_E_BAD_RESPONSE ;
* UPNP_E_BAD_HTTPMSG ;
*
* Note :
* Return: int
* UPNP_E_SUCCESS - On Sucess
* UPNP_E_INVALID_PARAM - Invalid Parameter
* UPNP_E_BAD_RESPONSE
* UPNP_E_BAD_HTTPMSG
* UPNP_E_CANCELED
************************************************************************/
int http_ReadHttpGet(IN void *Handle,
int http_ReadHttpGet(
IN void *Handle,
IN OUT char *buf,
IN OUT unsigned int *size,
IN int timeout);
/************************************************************************
* Function: http_HttpGetProgress
*
* Parameters:
* IN void *Handle : Handle to the HTTP get object
* OUT unsigned int *length : Buffer to get the read and parsed data
* OUT unsigned int *total : Size of tge buffer passed
* IN void *Handle; Handle to the HTTP get object
* OUT unsigned int *length; Buffer to get the read and parsed data
* OUT unsigned int *total; Size of tge buffer passed
*
* Description : Extracts information from the Handle to the HTTP get
* object.
* Description:
* Extracts information from the Handle to the HTTP get object.
*
* Return : int ;
* UPNP_E_SUCCESS - On Sucess ;
* UPNP_E_INVALID_PARAM - Invalid Parameter;
*
* Note :
* Return: int
* UPNP_E_SUCCESS - On Sucess
* UPNP_E_INVALID_PARAM - Invalid Parameter
************************************************************************/
int http_HttpGetProgress(IN void *Handle,
int http_HttpGetProgress(
IN void *Handle,
OUT unsigned int *length,
OUT unsigned int *total );
/************************************************************************
* Function: http_CloseHttpGet
*
* Parameters:
* IN void *Handle; Handle to HTTP get object
*
* Description : Clears the handle allocated for the HTTP GET operation
* Description:
* Clears the handle allocated for the HTTP GET operation
* Clears socket states and memory allocated for socket operations.
*
* Return : int ;
* Return: int
* UPNP_E_SUCCESS - On Success
* UPNP_E_INVALID_PARAM - Invalid Parameter
*
* Note :
************************************************************************/
int http_CloseHttpGet(IN void *Handle);
/************************************************************************
* Function: http_OpenHttpGet
*
@ -371,54 +387,52 @@ int http_CloseHttpGet(IN void *Handle);
* response message
* IN int timeout: time out value
*
* Description : Makes the HTTP GET message, connects to the peer,
* Description:
* Makes the HTTP GET message, connects to the peer,
* sends the HTTP GET request, gets the response and parses the
* response.
*
* Return : int;
* UPNP_E_SUCCESS - On Success ;
* UPNP_E_INVALID_PARAM - Invalid Paramters ;
* UPNP_E_OUTOF_MEMORY ;
* UPNP_E_SOCKET_ERROR ;
* UPNP_E_BAD_RESPONSE ;
*
* Note :
*
* Return: int
* UPNP_E_SUCCESS - On Success
* UPNP_E_INVALID_PARAM - Invalid Paramters
* UPNP_E_OUTOF_MEMORY
* UPNP_E_SOCKET_ERROR
* UPNP_E_BAD_RESPONSE
************************************************************************/
int http_OpenHttpGet(IN const char *url_str,
int http_OpenHttpGet(
IN const char *url_str,
IN OUT void **Handle,
IN OUT char **contentType,
OUT int *contentLength,
OUT int *httpStatus,
IN int timeout);
/************************************************************************
* Function: http_OpenHttpGetProxy
*
* Parameters:
* IN const char *url_str : String as a URL
* IN const char *proxy_str : String as a URL to the proxy
* IN OUT void **Handle : Pointer to buffer to store HTTP
* IN const char *url_str; String as a URL
* IN const char *proxy_str; String as a URL
* IN OUT void **Handle; Pointer to buffer to store HTTP
* post handle
* IN OUT char **contentType : Type of content
* OUT int *contentLength : length of content
* OUT int *httpStatus : HTTP status returned on receiving a
* IN OUT char **contentType; Type of content
* OUT int *contentLength; length of content
* OUT int *httpStatus; HTTP status returned on receiving a
* response message
* IN int timeout: time out value
*
* Description : Makes the HTTP GET message, connects to the peer,
* sends the HTTP GET request, gets the response and parses the
* response.
*
* Return : int;
* UPNP_E_SUCCESS - On Success ;
* UPNP_E_INVALID_PARAM - Invalid Paramters ;
* UPNP_E_OUTOF_MEMORY ;
* UPNP_E_SOCKET_ERROR ;
* UPNP_E_BAD_RESPONSE ;
*
* Note :
* Description:
* Makes the HTTP GET message, connects to the peer,
* sends the HTTP GET request, gets the response and parses the response.
* If a proxy URL is defined then the connection is made there.
*
* Return: int
* UPNP_E_SUCCESS - On Success
* UPNP_E_INVALID_PARAM - Invalid Paramters
* UPNP_E_OUTOF_MEMORY
* UPNP_E_SOCKET_ERROR
* UPNP_E_BAD_RESPONSE
************************************************************************/
int http_OpenHttpGetProxy(IN const char *url_str,
IN const char *proxy_str,
@ -433,24 +447,25 @@ int http_OpenHttpGetProxy(IN const char *url_str,
* Function: http_SendStatusResponse
*
* Parameters:
* IN SOCKINFO *info : Socket information object
* IN int http_status_code : error code returned while making
* IN SOCKINFO *info; Socket information object
* IN int http_status_code; error code returned while making
* or sending the response message
* IN int request_major_version : request major version
* IN int request_minor_version : request minor version
* IN int request_major_version; request major version
* IN int request_minor_version; request minor version
*
* Description : Generate a response message for the status query and
* send the status response.
* Description:
* Generate a response message for the status query and send the
* status response.
*
* Return : int;
* Return: int
* 0 -- success
* UPNP_E_OUTOF_MEMORY
* UPNP_E_SOCKET_WRITE
* UPNP_E_TIMEDOUT
*
* Note :
************************************************************************/
int http_SendStatusResponse( IN SOCKINFO *info, IN int http_status_code,
int http_SendStatusResponse(
IN SOCKINFO *info,
IN int http_status_code,
IN int request_major_version,
IN int request_minor_version );
@ -459,96 +474,103 @@ int http_SendStatusResponse( IN SOCKINFO *info, IN int http_status_code,
* Function: http_MakeMessage
*
* Parameters:
* INOUT membuffer* buf : buffer with the contents of the
* INOUT membuffer* buf; buffer with the contents of the
* message
* IN int http_major_version : HTTP major version
* IN int http_minor_version : HTTP minor version
* IN const char* fmt : Pattern format
* ... :
* IN int http_major_version; HTTP major version
* IN int http_minor_version; HTTP minor version
* IN const char* fmt; Pattern format
* ...;
*
* Description : Generate an HTTP message based on the format that is
* specified in the input parameters.
* Description:
* Generate an HTTP message based on the format that is specified
* in the input parameters.
*
* fmt types:
* 's': arg = const char* C_string
* 'b': arg1 = const char* buf; arg2 = size_t buf_length
* memory ptr
* 'c': (no args) appends CRLF "\r\n"
* 'd': arg = int number // appends decimal number
* 'h': arg = off_t number // appends off_t number
* 't': arg = time_t * gmt_time // appends time in RFC 1123 fmt
* 'D': (no args) appends HTTP DATE: header
* 'S': (no args) appends HTTP SERVER: header
* 'U': (no args) appends HTTP USER-AGENT: header
* 'B': arg = int status_code
* appends content-length, content-type and HTML body
* for given code
* 'b': arg1 = const char* buf;
* arg2 = size_t buf_length memory ptr
* 'C': (no args) appends a HTTP CONNECTION: close header
* depending on major,minor version
* 'N': arg1 = int content_length // content-length header
* 'Q': arg1 = http_method_t; arg2 = char* url;
* arg3 = int url_length // start line of request
* 'c': (no args) appends CRLF "\r\n"
* 'D': (no args) appends HTTP DATE: header
* 'd': arg = int number // appends decimal number
* 'G': arg = range information // add range header
* 'h': arg = off_t number // appends off_t number
* 'K': (no args) // add chunky header
* 'N': arg1 = off_t content_length // content-length header
* 'q': arg1 = http_method_t // request start line and HOST header
* arg2 = (uri_type *)
* 'Q': arg1 = http_method_t; // start line of request
* arg2 = char* url;
* arg3 = size_t url_length
* 'R': arg = int status_code // adds a response start line
* 'B': arg = int status_code
* appends content-length, content-type and HTML body for given code
* 'T': arg = char * content_type; format e.g: "text/html";
* content-type header
* 'S': (no args) appends HTTP SERVER: header
* 's': arg = const char* C_string
* 'T': arg = char * content_type; format
* e.g: "text/html"; content-type header
* 't': arg = time_t * gmt_time // appends time in RFC 1123 fmt
* 'U': (no args) appends HTTP USER-AGENT: header
* 'X': arg = const char useragent; "redsonic" HTTP X-User-Agent: useragent
*
* Return : int;
* Return: int
* 0 - On Success
* UPNP_E_OUTOF_MEMORY
* UPNP_E_INVALID_URL;
*
* Note :
* UPNP_E_INVALID_URL
************************************************************************/
int http_MakeMessage( INOUT membuffer* buf,
int http_MakeMessage(
INOUT membuffer* buf,
IN int http_major_version,
IN int http_minor_version,
IN const char* fmt, ... );
/************************************************************************
* Function: http_CalcResponseVersion
*
* Parameters:
* IN int request_major_vers : Request major version
* IN int request_minor_vers : Request minor version
* OUT int* response_major_vers : Response mojor version
* OUT int* response_minor_vers : Response minor version
* IN int request_major_vers; Request major version
* IN int request_minor_vers; Request minor version
* OUT int* response_major_vers; Response mojor version
* OUT int* response_minor_vers; Response minor version
*
* Description : Calculate HTTP response versions based on the request
* versions.
* Description:
* Calculate HTTP response versions based on the request versions.
*
* Return: void
*
* Note :
************************************************************************/
void http_CalcResponseVersion(
IN int request_major_vers, IN int request_minor_vers,
OUT int* response_major_vers, OUT int* response_minor_vers );
IN int request_major_vers,
IN int request_minor_vers,
OUT int* response_major_vers,
OUT int* response_minor_vers );
/************************************************************************
* Function: http_OpenHttpGetEx
*
* Parameters:
* IN const char *url_str : String as a URL
* IN OUT void **Handle : Pointer to buffer to store HTTP
* IN const char *url_str; String as a URL
* IN OUT void **Handle; Pointer to buffer to store HTTP
* post handle
* IN OUT char **contentType : Type of content
* OUT int *contentLength : length of content
* OUT int *httpStatus : HTTP status returned on receiving a
* IN OUT char **contentType; Type of content
* OUT int *contentLength; length of content
* OUT int *httpStatus; HTTP status returned on receiving a
* response message
* IN int timeout : time out value
* IN int timeout; time out value
*
* Description : Makes the HTTP GET message, connects to the peer,
* Description:
* Makes the HTTP GET message, connects to the peer,
* sends the HTTP GET request, gets the response and parses the
* response.
*
* Return : int;
* UPNP_E_SUCCESS - On Success ;
* UPNP_E_INVALID_PARAM - Invalid Paramters ;
* UPNP_E_OUTOF_MEMORY ;
* UPNP_E_SOCKET_ERROR ;
* UPNP_E_BAD_RESPONSE ;
*
* Note :
*
* Return: int
* UPNP_E_SUCCESS - On Success
* UPNP_E_INVALID_PARAM - Invalid Paramters
* UPNP_E_OUTOF_MEMORY
* UPNP_E_SOCKET_ERROR
* UPNP_E_BAD_RESPONSE
************************************************************************/
int http_OpenHttpGetEx(IN const char *url_str,
IN OUT void **Handle,
@ -559,18 +581,18 @@ int http_OpenHttpGetEx(IN const char *url_str,
IN int highRange,
IN int timeout);
/************************************************************************
* Function: get_sdk_info
*
* Parameters:
* OUT char *info ;
* OUT char *info; buffer to store the operating system information
*
* Description : Returns the server information for the operating
* system
* Description:
* Returns the server information for the operating system
*
* Return : void ;
*
* Note :
* Return:
* UPNP_INLINE void
************************************************************************/
void get_sdk_info( OUT char *info );
@ -580,3 +602,4 @@ void get_sdk_info( OUT char *info );
#endif // GENLIB_NET_HTTP_HTTPREADWRITE_H