diff options
author | Andrey Nazarov <skuller@skuller.net> | 2008-01-04 18:19:19 +0000 |
---|---|---|
committer | Andrey Nazarov <skuller@skuller.net> | 2008-01-04 18:19:19 +0000 |
commit | 348024fbd44d37f073e7b2d4a19a7b555c3dd684 (patch) | |
tree | 18e475eec42589304ebc4cf863242c1751bb4ddb /source/sv_mvd.c | |
parent | 87573a3f6ae7400f597b74318bdaf161edfa225c (diff) |
Added `sv_mvd_encoding' variable, defaults to gzip content encoding.
Allow unicast configstrings in CS_GENERAL range only.
When parsing mvd_configstring, reset corresponding unicast configstrings.
Removed `Status page of' prefix.
Highlight MVD stream links only when `sv_mvd_enable' is non-zero.
Diffstat (limited to 'source/sv_mvd.c')
-rw-r--r-- | source/sv_mvd.c | 63 |
1 files changed, 46 insertions, 17 deletions
diff --git a/source/sv_mvd.c b/source/sv_mvd.c index 9aaebbe..0a04971 100644 --- a/source/sv_mvd.c +++ b/source/sv_mvd.c @@ -34,6 +34,9 @@ cvar_t *sv_mvd_max_size; cvar_t *sv_mvd_max_duration; cvar_t *sv_mvd_begincmd; cvar_t *sv_mvd_scorecmd; +#if USE_ZLIB +cvar_t *sv_mvd_encoding; +#endif static cmdbuf_t dummy_buffer; static char dummy_buffer_text[MAX_STRING_CHARS]; @@ -681,10 +684,47 @@ void SV_MvdClientNew( tcpClient_t *client ) { SZ_Clear( &msg_write ); } - -void SV_MvdGetStream( const char *uri ) { +void SV_MvdInitStream( void ) { uint32 magic; +#if USE_ZLIB + int bits; +#endif + + SV_HttpPrintf( "HTTP/1.0 200 OK\r\n" ); + +#if USE_ZLIB + switch( sv_mvd_encoding->integer ) { + case 1: + SV_HttpPrintf( "Content-Encoding: gzip\r\n" ); + bits = 31; + break; + case 2: + SV_HttpPrintf( "Content-Encoding: deflate\r\n" ); + bits = 15; + break; + default: + bits = 0; + break; + } +#endif + + SV_HttpPrintf( + "Content-Type: application/octet-stream\r\n" + "Content-Disposition: attachment; filename=\"stream.mvd2\"\r\n" + "\r\n" ); +#if USE_ZLIB + if( bits ) { + deflateInit2( &http_client->z, Z_DEFAULT_COMPRESSION, + Z_DEFLATED, bits, 8, Z_DEFAULT_STRATEGY ); + } +#endif + + magic = MVD_MAGIC; + SV_HttpWrite( http_client, &magic, 4 ); +} + +void SV_MvdGetStream( const char *uri ) { if( http_client->method == HTTP_METHOD_HEAD ) { SV_HttpPrintf( "HTTP/1.0 200 OK\r\n\r\n" ); SV_HttpDrop( http_client, "200 OK " ); @@ -699,21 +739,7 @@ void SV_MvdGetStream( const char *uri ) { List_Append( &svs.mvd.clients, &http_client->mvdEntry ); - SV_HttpPrintf( - "HTTP/1.0 200 OK\r\n" -#ifdef USE_ZLIB - "Content-Encoding: deflate\r\n" -#endif - "Content-Type: application/octet-stream\r\n" - "Content-Disposition: attachment; filename=\"stream.mvd2\"\r\n" - "\r\n" ); - -#if USE_ZLIB - deflateInit( &http_client->z, Z_DEFAULT_COMPRESSION ); -#endif - - magic = MVD_MAGIC; - SV_HttpWrite( http_client, &magic, 4 ); + SV_MvdInitStream(); SV_MvdClientNew( http_client ); } @@ -915,6 +941,9 @@ void SV_MvdRegister( void ) { "wait 50; putaway; wait 10; help;", 0 ); sv_mvd_scorecmd = Cvar_Get( "sv_mvd_scorecmd", "putaway; wait 10; help;", 0 ); +#if USE_ZLIB + sv_mvd_encoding = Cvar_Get( "sv_mvd_encoding", "1", 0 ); +#endif dummy_buffer.text = dummy_buffer_text; dummy_buffer.maxsize = sizeof( dummy_buffer_text ); |