Package: libmms0
Version: 0.3-1
Severity: normal

Hi,

  Some of our colleges are videotaped and set online as mmsstreams.
  Unfortunately libmms can't connect because it finds that the ASF packets are
  too large for some reason. Attached patch makes the maximum packet size twice
  as large and makes the videostream work nicely in totem :)

    Sjoerd

-- System Information:
Debian Release: 4.0
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'testing'), (101, 'experimental')
Architecture: powerpc (ppc)
Shell:  /bin/sh linked to /bin/dash
Kernel: Linux 2.6.18-4-powerpc
Locale: LANG=C, LC_CTYPE=nl_NL (charmap=ISO-8859-1)

Versions of packages libmms0 depends on:
ii  libc6                       2.3.6.ds1-13 GNU C Library: Shared libraries
ii  libglib2.0-0                2.12.6-2     The GLib library of C routines

libmms0 recommends no packages.

-- no debconf information
--- libmms-0.3.orig/src/mms.c
+++ libmms-0.3/src/mms.c
@@ -80,7 +80,7 @@
 #define CMD_PREFIX_LEN    8
 #define CMD_BODY_LEN   1024
 
-#define ASF_HEADER_LEN 8192
+#define ASF_HEADER_LEN (8192 * 2)
 
 
 #define MMS_PACKET_ERR        0
@@ -680,7 +680,8 @@
       case MMS_PACKET_ASF_PACKET:
         if (header.packet_len + this->asf_header_len > ASF_HEADER_LEN) {
             lprintf( "***LOG:*** -- "
-                     "libmms: asf packet too large\n");
+                     "libmms: asf packet too large: %d\n", 
+                     header.packet_len + this->asf_header_len);
             return 0;
         }
         len = io_read(io,  this->s,
--- libmms-0.3.orig/src/mmsh.c
+++ libmms-0.3/src/mmsh.c
@@ -79,7 +79,7 @@
 #define CHUNK_TYPE_END         0x4524
 #define CHUNK_TYPE_ASF_HEADER  0x4824
 #define CHUNK_SIZE              65536  /* max chunk size */
-#define ASF_HEADER_SIZE          8192  /* max header size */
+#define ASF_HEADER_SIZE     (8192 * 2)  /* max header size */
 
 #define SCRATCH_SIZE             1024
 
@@ -462,7 +462,7 @@
   /* read chunk header */
   read_len = io_read(io, this->s, chunk_header, CHUNK_HEADER_LENGTH);
   if (read_len != CHUNK_HEADER_LENGTH) {
-    lprintf ("chunk header read failed, %d != %d\n", len, CHUNK_HEADER_LENGTH);
+    lprintf ("chunk header read failed, %d != %d\n", read_len, CHUNK_HEADER_LENGTH);
     return 0;
   }
   this->chunk_type       = LE_16 (&chunk_header[0]);

Reply via email to