summaryrefslogtreecommitdiff
path: root/source/sv_mvd.c
diff options
context:
space:
mode:
authorAndrey Nazarov <skuller@skuller.net>2008-01-04 18:19:19 +0000
committerAndrey Nazarov <skuller@skuller.net>2008-01-04 18:19:19 +0000
commit348024fbd44d37f073e7b2d4a19a7b555c3dd684 (patch)
tree18e475eec42589304ebc4cf863242c1751bb4ddb /source/sv_mvd.c
parent87573a3f6ae7400f597b74318bdaf161edfa225c (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.c63
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 );