mirror of
https://github.com/YGGverse/xash3d-fwgs.git
synced 2025-01-31 01:04:30 +00:00
make HTTP_ParseURL compatible with IPv4/IPv6 #1559
This commit is contained in:
parent
97112f2780
commit
f3e4497b58
@ -2780,81 +2780,41 @@ HTTP_ParseURL
|
|||||||
*/
|
*/
|
||||||
static httpserver_t *HTTP_ParseURL( const char *url )
|
static httpserver_t *HTTP_ParseURL( const char *url )
|
||||||
{
|
{
|
||||||
httpserver_t *server;
|
httpserver_t *server = Z_Calloc( sizeof( httpserver_t ));
|
||||||
int i;
|
int i = 0;
|
||||||
|
|
||||||
url = Q_strstr( url, "http://" );
|
// IPv6
|
||||||
|
if( Q_strstr( url, "http://[" ) )
|
||||||
if( !url )
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
url += 7;
|
|
||||||
server = Z_Calloc( sizeof( httpserver_t ));
|
|
||||||
i = 0;
|
|
||||||
|
|
||||||
while( *url && ( *url != ':' ) && ( *url != '/' ) && ( *url != '\r' ) && ( *url != '\n' ))
|
|
||||||
{
|
{
|
||||||
if( i > sizeof( server->host ))
|
url += 8;
|
||||||
return NULL;
|
|
||||||
|
|
||||||
server->host[i++] = *url++;
|
while( *url && ( *url != ']' ) && ( *url != '/' ) && ( *url != '\r' ) && ( *url != '\n' ))
|
||||||
|
{
|
||||||
|
if( i > sizeof( server->host ))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
server->host[i++] = *url++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
server->host[i] = 0;
|
// IPv4
|
||||||
|
|
||||||
if( *url == ':' )
|
|
||||||
{
|
|
||||||
server->port = Q_atoi( ++url );
|
|
||||||
|
|
||||||
while( *url && ( *url != '/' ) && ( *url != '\r' ) && ( *url != '\n' ))
|
|
||||||
url++;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
server->port = 80;
|
|
||||||
|
|
||||||
i = 0;
|
|
||||||
|
|
||||||
while( *url && ( *url != '\r' ) && ( *url != '\n' ))
|
|
||||||
{
|
{
|
||||||
if( i > sizeof( server->path ))
|
if( Q_strstr( url, "http://" ) )
|
||||||
|
{
|
||||||
|
url += 7;
|
||||||
|
|
||||||
|
while( *url && ( *url != ':' ) && ( *url != '/' ) && ( *url != '\r' ) && ( *url != '\n' ))
|
||||||
|
{
|
||||||
|
if( i > sizeof( server->host ))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
server->host[i++] = *url++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
else
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
server->path[i++] = *url++;
|
|
||||||
}
|
|
||||||
|
|
||||||
server->path[i] = 0;
|
|
||||||
server->next = NULL;
|
|
||||||
server->needfree = false;
|
|
||||||
|
|
||||||
return server;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
==================
|
|
||||||
HTTP_ParseURL_IPv6
|
|
||||||
==================
|
|
||||||
*/
|
|
||||||
static httpserver_t *HTTP_ParseURL_IPv6( const char *url )
|
|
||||||
{
|
|
||||||
httpserver_t *server;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
url = Q_strstr( url, "http://[" );
|
|
||||||
|
|
||||||
if( !url )
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
url += 8;
|
|
||||||
server = Z_Calloc( sizeof( httpserver_t ));
|
|
||||||
i = 0;
|
|
||||||
|
|
||||||
while( *url && ( *url != ']' ) && ( *url != '/' ) && ( *url != '\r' ) && ( *url != '\n' ))
|
|
||||||
{
|
|
||||||
if( i > sizeof( server->host ))
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
server->host[i++] = *url++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
server->host[i] = 0;
|
server->host[i] = 0;
|
||||||
@ -2893,8 +2853,6 @@ HTTP_AddCustomServer
|
|||||||
*/
|
*/
|
||||||
void HTTP_AddCustomServer( const char *url )
|
void HTTP_AddCustomServer( const char *url )
|
||||||
{
|
{
|
||||||
// todo condition
|
|
||||||
// httpserver_t *server = HTTP_ParseURL_IPv6( url );
|
|
||||||
httpserver_t *server = HTTP_ParseURL( url );
|
httpserver_t *server = HTTP_ParseURL( url );
|
||||||
|
|
||||||
if( !server )
|
if( !server )
|
||||||
@ -3055,8 +3013,6 @@ void HTTP_Init( void )
|
|||||||
{
|
{
|
||||||
while(( line = COM_ParseFile( line, token, sizeof( token ))))
|
while(( line = COM_ParseFile( line, token, sizeof( token ))))
|
||||||
{
|
{
|
||||||
// todo condition
|
|
||||||
// httpserver_t *server = HTTP_ParseURL_IPv6( token );
|
|
||||||
httpserver_t *server = HTTP_ParseURL( token );
|
httpserver_t *server = HTTP_ParseURL( token );
|
||||||
|
|
||||||
if( !server )
|
if( !server )
|
||||||
|
Loading…
x
Reference in New Issue
Block a user