[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#481526: gnump3d: Content-length is always one byte too large.



Package: gnump3d
Version: 3.0-4
Severity: important



GnuMP3d reports a bad content-length to the http client. That makes some
clients try to resume the download.

Example:

   $ ls -l music.mp3
=> -rw-r--r-- 1 glenux glenux 6257859 aoû  1  2005   music.mp3
a 
   $ wget http://localhost:8888/music.mp3
   --2008-05-16 16:06:17--  http://localhost:8888/music.mp3
   Resolving localhost... 127.0.0.1
   Connecting to localhost|127.0.0.1|:8888... connected.
   HTTP request sent, awaiting response... 200 OK
=> Length: 6257860 (6.0M) [audio/mpeg]
b   Saving to: `music.mp3'

   99% [=========================================================> ] 6,257,859    111K/s   in 57s

=> 2008-05-16 16:07:16 (107 KB/s) - Connection closed at byte 6257859. Retrying.
c 
   --2008-05-16 16:07:17--  (try: 2)  http://localhost:8888/music.mp3
   Connecting to localhost|127.0.0.1|:8888... connected.
   HTTP request sent, awaiting response... 206 OK
   Length: 6257860 (6.0M), 1 remaining [audio/mpeg]
   Saving to: `music.mp3'

   99% [++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ] 6,257,859   --.-K/s   in 0s

   [...]

We clearly see the differences between the reported file length
in a), b) and c).


See attached patch for the fix.

Best regards,
Glenn.

-- System Information:
Debian Release: lenny/sid
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable'), (500, 'stable'), (1, 'experimental')
Architecture: i386 (i686)

Kernel: Linux 2.6.22.19-vs2.2.0.7 (PREEMPT)
Locale: LANG=fr_FR@euro, LC_CTYPE=fr_FR@euro (charmap=UTF-8) (ignored: LC_ALL set to fr_FR.UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages gnump3d depends on:
ii  adduser                       3.107      add and remove users and groups
ii  debconf                       1.5.21     Debian configuration management sy
ii  logrotate                     3.7.1-3    Log rotation utility
ii  netbase                       4.32       Basic TCP/IP networking system
ii  perl                          5.8.8-12   Larry Wall's Practical Extraction 
ii  perl-modules                  5.8.8-12   Core Perl modules

gnump3d recommends no packages.

-- debconf information:
  gnump3d/user: gnump3d
  gnump3d/root: /var/music
  gnump3d/port: 8888
diff -Nur gnump3d-3.0/bin/gnump3d2 gnump3d-3.0.fix/bin/gnump3d2
--- gnump3d-3.0/bin/gnump3d2	2008-05-16 15:57:31.000000000 +0200
+++ gnump3d-3.0.fix/bin/gnump3d2	2008-05-16 16:36:57.000000000 +0200
@@ -1319,11 +1319,12 @@
 	$mtime = gmtime $mtime;
 	my ($day, $mon, $dm, $tm, $yr) =
 	    ($mtime =~ m/(...) (...) (..) (..:..:..) (....)/);
+	my $last_byte_pos = $length - 1;
 
 	# matt: handle partial content
 	if (!$extra->{NoContentLength}) {
-	    $header .= "Content-Range: bytes $range-$length/$length\n";
-	    $length -= $range;
+	    $header .= "Content-Range: bytes $range-$last_byte_pos/$length\n";
+	    $length -= ($range + 1);
 	    $header .= "Content-length: $length\n";
 	}
 	$header .= "Last-Modified: $day, $dm $mon $yr $tm GMT\n";

Reply to: