UFO: Alien Invasion
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
http.cpp File Reference
#include "http.h"
#include "../shared/shared.h"
#include <SDL_thread.h>

Go to the source code of this file.

Functions

bool HTTP_ExtractComponents (const char *url, char *scheme, size_t schemeLength, char *host, size_t hostLength, char *path, size_t pathLength, int *port)
 Extract the servername, the port and the path part of the given url. More...
 
size_t HTTP_Header (void *ptr, size_t size, size_t nmemb, void *stream)
 libcurl callback to update header info. More...
 
size_t HTTP_Recv (void *ptr, size_t size, size_t nmemb, void *stream)
 libcurl callback for HTTP_GetURL More...
 
static void HTTP_ResolvURL (const char *url, char *buf, size_t size)
 Converts the hostname into an ip to work around a bug in libcurl (resp. the resolver) that uses alarm for timeouts (this is in conflict with our signal handlers and longjmp environment) More...
 
static bool HTTP_GetURLInternal (dlhandle_t &dl, const char *url, FILE *file, const char *postfields)
 Gets a specific url. More...
 
bool HTTP_PutFile (const char *formName, const char *fileName, const char *url, const upparam_t *params)
 
bool HTTP_GetToFile (const char *url, FILE *file, const char *postfields)
 Downloads the given url into the given file. More...
 
bool HTTP_Encode (const char *url, char *out, size_t outLength)
 This function converts the given url to an URL encoded string. All input characters that are not a-z, A-Z, 0-9, '-', '.', '_' or '~' are converted to their "URL escaped" version (NN where NN is a two-digit hexadecimal number). More...
 
bool HTTP_GetURL (const char *url, http_callback_t callback, void *userdata, const char *postfields)
 Downloads the given url and return the data to the callback (optional) More...
 
void HTTP_Cleanup (void)
 UFO is exiting or we're changing servers. Clean up. More...
 

Function Documentation

void HTTP_Cleanup ( void  )

UFO is exiting or we're changing servers. Clean up.

Definition at line 396 of file http.cpp.

Referenced by Qcommon_Shutdown().

bool HTTP_Encode ( const char *  url,
char *  out,
size_t  outLength 
)

This function converts the given url to an URL encoded string. All input characters that are not a-z, A-Z, 0-9, '-', '.', '_' or '~' are converted to their "URL escaped" version (NN where NN is a two-digit hexadecimal number).

Returns
true if the conversion was successful, false if it failed or the target buffer was too small.

Definition at line 352 of file http.cpp.

References Q_strncpyz().

Referenced by WEB_CGameGetURL(), WEB_GetToFile(), and WEB_GetURL().

bool HTTP_ExtractComponents ( const char *  url,
char *  scheme,
size_t  schemeLength,
char *  host,
size_t  hostLength,
char *  path,
size_t  pathLength,
int port 
)

Extract the servername, the port and the path part of the given url.

Parameters
[in]urlThe url to extract the data from
[out]schemeThe URL scheme string http or https
[in]schemeLengthLength of the scheme buffer
[out]hostThe server target buffer
[in]hostLengthThe length of the buffer
[out]pathThe path target buffer
[in]pathLengthThe length of the buffer
[out]portThe port
Returns
true if the extracting went well, false if an error occurred

Definition at line 38 of file http.cpp.

References Com_Printf(), i, Q_streq, Q_strncpyz(), Q_strneq, and Q_strnull().

Referenced by HTTP_ResolvURL(), and TEST_F().

bool HTTP_GetToFile ( const char *  url,
FILE file,
const char *  postfields 
)

Downloads the given url into the given file.

Parameters
[in]urlThe url to fetch
[in]fileThe file to write the result into
[in]postfieldsSome potential POST data in the form

Definition at line 336 of file http.cpp.

References HTTP_GetURLInternal(), and OBJZERO.

Referenced by WEB_CGameDownloadFromUser(), and WEB_GetToFile().

bool HTTP_GetURL ( const char *  url,
http_callback_t  callback,
void userdata,
const char *  postfields 
)

Downloads the given url and return the data to the callback (optional)

Parameters
[in]urlThe url to fetch
[in]callbackThe callback to give the data to. Might also be NULL
[in]userdataThe userdata that is given to the callback
[in]postfieldsSome potential POST data

Definition at line 374 of file http.cpp.

References HTTP_GetURLInternal(), Mem_Free, OBJZERO, and dlhandle_s::tempBuffer.

Referenced by CL_QueryMasterServer(), Irc_Client_Invite_f(), Master_HeartbeatThread(), Master_Shutdown(), SV_SetMaster_f(), and WEB_GetURL().

static bool HTTP_GetURLInternal ( dlhandle_t dl,
const char *  url,
FILE file,
const char *  postfields 
)
static

Gets a specific url.

Note
Make sure, that you free the string that is returned by this function

Definition at line 206 of file http.cpp.

References Com_Printf(), dlhandle_s::curl, GAME_TITLE, HTTP_Header(), http_proxy, HTTP_Recv(), HTTP_ResolvURL(), http_timeout, cvar_s::integer, Q_strncpyz(), Q_strnull(), cvar_s::string, UFO_VERSION, and dlhandle_s::URL.

Referenced by HTTP_GetToFile(), and HTTP_GetURL().

size_t HTTP_Header ( void ptr,
size_t  size,
size_t  nmemb,
void stream 
)

libcurl callback to update header info.

Definition at line 126 of file http.cpp.

References dlhandle_s::file, dlhandle_s::fileSize, len, Q_strncasecmp, and Q_strncpyz().

Referenced by CL_StartHTTPDownload(), and HTTP_GetURLInternal().

bool HTTP_PutFile ( const char *  formName,
const char *  fileName,
const char *  url,
const upparam_t params 
)
size_t HTTP_Recv ( void ptr,
size_t  size,
size_t  nmemb,
void stream 
)

libcurl callback for HTTP_GetURL

Definition at line 154 of file http.cpp.

References dlhandle_s::fileSize, Mem_AllocTypeN, Mem_Free, dlhandle_s::position, and dlhandle_s::tempBuffer.

Referenced by CL_StartHTTPDownload(), and HTTP_GetURLInternal().

static void HTTP_ResolvURL ( const char *  url,
char *  buf,
size_t  size 
)
static

Converts the hostname into an ip to work around a bug in libcurl (resp. the resolver) that uses alarm for timeouts (this is in conflict with our signal handlers and longjmp environment)

Parameters
[in]urlThe url to convert
[out]bufThe resolved url or empty if an error occurred
[in]sizeThe size of the target buffer

Definition at line 184 of file http.cpp.

References Com_Error(), Com_sprintf(), ERR_DROP, HTTP_ExtractComponents(), MAX_VAR, NET_ResolvNode(), and port.

Referenced by HTTP_GetURLInternal(), and HTTP_PutFile().