diff --git a/src/ChangeLog b/src/ChangeLog
index 4f88172b..e8069bda 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,7 @@
+2014-04-22  Tim Ruehsen  <tim.ruehsen@gmx.de>
+
+        * http.c (gethttp): Fix 204 response handling
+
 2014-03-26  Darshit Shah  <darnir@gmail.com>
 
 	* ftp.c (getftp): Rearrange parameters to fix compiler warning
diff --git a/src/http.c b/src/http.c
index 8bba70df..00a35b32 100644
--- a/src/http.c
+++ b/src/http.c
@@ -2618,6 +2618,22 @@ read_header:
   if (H_20X (statcode))
     *dt |= RETROKF;
 
+  if (statcode == HTTP_STATUS_NO_CONTENT)
+    {
+      /* 204 response has no body (RFC 2616, 4.3) */
+
+      /* In case the caller cares to look...  */
+      hs->len = 0;
+      hs->res = 0;
+      hs->restval = 0;
+
+      CLOSE_FINISH (sock);
+      xfree_null (type);
+      xfree (head);
+
+      return RETRFINISHED;
+    }
+
   /* Return if redirected.  */
   if (H_REDIRECTED (statcode) || statcode == HTTP_STATUS_MULTIPLE_CHOICES)
     {
diff --git a/tests/ChangeLog b/tests/ChangeLog
index 83d380b8..a2d85804 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,9 @@
+2014-40-22  Tim Ruehsen <tim.ruehsen@gmx.de>
+
+        * Test-204.px: added file
+        * run-px: added Test-204.px
+        * Makefile.am: added Test-204.px
+
 2014-04-22  Giuseppe Scrivano  <gscrivan@redhat.com>
 
 	* Makefile.am (EXTRA_DIST): Add missing Test--start-pos.px,
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 76fe2f09..fdde94d6 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -142,6 +142,7 @@ EXTRA_DIST = FTPServer.pm FTPTest.pm HTTPServer.pm HTTPTest.pm \
              Test--start-pos.px \
              Test--start-pos--continue.px \
              Test--httpsonly-r.px \
+             Test-204.px \
              run-px certs
 
 check_PROGRAMS = unit-tests
diff --git a/tests/Test-204.px b/tests/Test-204.px
new file mode 100644
index 00000000..6f3e8dc0
--- /dev/null
+++ b/tests/Test-204.px
@@ -0,0 +1,35 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+
+use HTTPTest;
+
+
+###############################################################################
+
+# code, msg, headers, content
+my %urls = (
+    '/dummy' => {
+        code => "204",
+        msg => "Dontcare",
+    },
+);
+
+my $cmdline = $WgetTest::WGETPATH . " http://localhost:{{port}}/dummy";
+
+my $expected_error_code = 0;
+
+my %expected_downloaded_files = (
+);
+
+###############################################################################
+
+my $the_test = HTTPTest->new (name => "Test-204",
+                              input => \%urls,
+                              cmdline => $cmdline,
+                              errcode => $expected_error_code,
+                              output => \%expected_downloaded_files);
+exit $the_test->run();
+
+# vim: et ts=4 sw=4
diff --git a/tests/run-px b/tests/run-px
index 402f2292..49dcb740 100755
--- a/tests/run-px
+++ b/tests/run-px
@@ -91,6 +91,7 @@ my @tests = (
     'Test--start-pos.px',
     'Test-ftp--start-pos.px',
     'Test--start-pos--continue.px',
+    'Test-204.px',
 );
 
 foreach my $var (qw(SYSTEM_WGETRC WGETRC)) {