* bug#14884: TLS connection not terminated properly @ 2013-07-16 20:50 Ludovic Courtès 2014-01-21 16:56 ` Ludovic Courtès 0 siblings, 1 reply; 10+ messages in thread From: Ludovic Courtès @ 2013-07-16 20:50 UTC (permalink / raw) To: 14884 As reported by Mark Weaver and others, fetching from https://archive.apache.org leads an error: --8<---------------cut here---------------start------------->8--- $ guix build -S subversion --no-substitutes The following derivation will be built: /nix/store/0qm0bggyhrdhrk1ks8hs2pya5n0ikx57-subversion-1.7.8.tar.bz2.drv @ build-started /nix/store/0qm0bggyhrdhrk1ks8hs2pya5n0ikx57-subversion-1.7.8.tar.bz2.drv - x86_64-linux /nix/var/log/nix/drvs/0q//m0bggyhrdhrk1ks8hs2pya5n0ikx57-subversion-1.7.8.tar.bz2.drv.bz2 starting download of `/nix/store/i35q1vm2sl27sjhs7mx8n2m05056ya9x-subversion-1.7.8.tar.bz2' from `https://archive.apache.org/dist/subversion/subversion-1.7.8.tar.bz2'... https://archive.apache.org/.../subversion-1.7.8.tar.bz2 99.0% of 5882.7 KiBERROR: Throw to key `gnutls-error' with args `(#<gnutls-error-enum The TLS connection was non-properly terminated.> fill_session_record_port_input)'. failed to download "/nix/store/i35q1vm2sl27sjhs7mx8n2m05056ya9x-subversion-1.7.8.tar.bz2" from "https://archive.apache.org/dist/subversion/subversion-1.7.8.tar.bz2" --8<---------------cut here---------------end--------------->8--- We discussed it on IRC some time ago: <mark_weaver> I just tried, and the wget from guix also works. <civodul> ok <mark_weaver> maybe wget is ignoring that particular TLS error, dunno. * civodul tries [23:22] <civodul> i can reproduce it <mark_weaver> I see something about it on this page: http://download.opensuse.org/distribution/12.1/repo/oss/ChangeLog [23:29] <mark_weaver> For glib-networking update to version 2.29.92, it says "Fixed a problem when linking against GNUTLS 3.0, where connections would sometimes return the error "The TLS connection was non-properly terminated". (bgo#659233)" [23:30] <mark_weaver> I'm not sure what bug tracking system that bug number is in. <civodul> the rationale is discussed at http://comments.gmane.org/gmane.comp.encryption.gpg.gnutls.devel/4842 [23:32] <mark_weaver> https://bugzilla.gnome.org/show_bug.cgi?id=659233 [23:33] <mark_weaver> well, I suppose we could just use plain http for that URL. [23:35] <civodul> sure :-) [23:36] <civodul> though the problem is worth fixing <mark_weaver> is it a problem on our end, or on the apache archive server? [23:37] <mark_weaver> given that we will check the SHAsum on the downloaded file, I suppose there's no harm in ignoring that error for downloads, in any case. [23:38] <civodul> yes, that's what i was thinking [23:39] <civodul> but it's actually tricky to ignore <civodul> because we pass a TLS port to the download code <mark_weaver> here's what glib-networking did, fwiw: https://bug659233.bugzilla-attachments.gnome.org/attachment.cgi?id=196741 [23:40] The problem is that the exception is raised by the TLS session record port’s fill_input method, so there’s no nice call site to wrap into ‘catch’. We could catch around the ‘dump-port’ call in (guix build download), but we’d lose info about how much data has actually been transferred. So for now, I will just: 1. use http://archive.apache.org instead of https; 2. ignore this problem altogether, unless this behavior is found to be widespread. Comments welcome. Ludo’. ^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#14884: TLS connection not terminated properly 2013-07-16 20:50 bug#14884: TLS connection not terminated properly Ludovic Courtès @ 2014-01-21 16:56 ` Ludovic Courtès 2014-01-23 19:44 ` Andreas Enge 2014-03-29 13:21 ` Ludovic Courtès 0 siblings, 2 replies; 10+ messages in thread From: Ludovic Courtès @ 2014-01-21 16:56 UTC (permalink / raw) To: 14884 ludo@gnu.org (Ludovic Courtès) skribis: > As reported by Mark Weaver and others, fetching from > https://archive.apache.org leads an error: > > $ guix build -S subversion --no-substitutes > The following derivation will be built: > /nix/store/0qm0bggyhrdhrk1ks8hs2pya5n0ikx57-subversion-1.7.8.tar.bz2.drv > @ build-started /nix/store/0qm0bggyhrdhrk1ks8hs2pya5n0ikx57-subversion-1.7.8.tar.bz2.drv - x86_64-linux /nix/var/log/nix/drvs/0q//m0bggyhrdhrk1ks8hs2pya5n0ikx57-subversion-1.7.8.tar.bz2.drv.bz2 > starting download of `/nix/store/i35q1vm2sl27sjhs7mx8n2m05056ya9x-subversion-1.7.8.tar.bz2' from `https://archive.apache.org/dist/subversion/subversion-1.7.8.tar.bz2'... > https://archive.apache.org/.../subversion-1.7.8.tar.bz2 99.0% of 5882.7 KiBERROR: Throw to key `gnutls-error' with args `(#<gnutls-error-enum The TLS connection was non-properly terminated.> fill_session_record_port_input)'. > failed to download "/nix/store/i35q1vm2sl27sjhs7mx8n2m05056ya9x-subversion-1.7.8.tar.bz2" from "https://archive.apache.org/dist/subversion/subversion-1.7.8.tar.bz2" We were discussing it on IRC and, boom!, I remembered that I fixed something which may help with this: http://git.sv.gnu.org/cgit/guile.git/commit/?h=stable-2.0&id=802a25b1ed5c738aa5f9d3d01f33eb89b22afd1b And indeed, that patch fixes the problem. I guess we’ll have to add that patch to Guile in ‘core-updates’, so we can actually benefit from it when building source derivations. Thanks, Ludo’. ^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#14884: TLS connection not terminated properly 2014-01-21 16:56 ` Ludovic Courtès @ 2014-01-23 19:44 ` Andreas Enge 2014-01-24 2:32 ` [PATCH] gnu: patch Guile 2.0 to fix bug #14884 Cyril Roelandt ` (2 more replies) 2014-03-29 13:21 ` Ludovic Courtès 1 sibling, 3 replies; 10+ messages in thread From: Andreas Enge @ 2014-01-23 19:44 UTC (permalink / raw) To: Ludovic Courtès; +Cc: 14884 On Tue, Jan 21, 2014 at 05:56:05PM +0100, Ludovic Courtès wrote: > I guess we’ll have to add that patch to Guile in ‘core-updates’, so we > can actually benefit from it when building source derivations. Are the sources not fetched with the system guile in guix? So that we would first need to "guix package -i guile" to profit from the patch? In any case, a fix would be more than welcome, as none of the python modules can currently be downloaded from pypi.python.org. And they have been garbage collected on hydra. Andreas ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH] gnu: patch Guile 2.0 to fix bug #14884. 2014-01-23 19:44 ` Andreas Enge @ 2014-01-24 2:32 ` Cyril Roelandt 2014-01-25 15:52 ` Ludovic Courtès 2014-01-24 2:34 ` bug#14884: TLS connection not terminated properly Cyril Roelandt 2014-01-24 13:08 ` Ludovic Courtès 2 siblings, 1 reply; 10+ messages in thread From: Cyril Roelandt @ 2014-01-24 2:32 UTC (permalink / raw) To: guix-devel * gnu/packages/patches/guile-web.patch: New file. * gnu-system.am: Add it * gnu/packages/guile.scm (guile-2.0): Add the patch. --- gnu-system.am | 1 + gnu/packages/guile.scm | 3 +- gnu/packages/patches/guile-web.patch | 78 ++++++++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/guile-web.patch diff --git a/gnu-system.am b/gnu-system.am index a2377fd..88313e2 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -233,6 +233,7 @@ dist_patch_DATA = \ gnu/packages/patches/guile-default-utf8.patch \ gnu/packages/patches/guile-linux-syscalls.patch \ gnu/packages/patches/guile-relocatable.patch \ + gnu/packages/patches/guile-web.patch \ gnu/packages/patches/hop-bigloo-4.0b.patch \ gnu/packages/patches/libevent-dns-tests.patch \ gnu/packages/patches/libtool-skip-tests.patch \ diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index 653d42c..867a646 100644 --- a/gnu/packages/guile.scm +++ b/gnu/packages/guile.scm @@ -113,7 +113,8 @@ without requiring the source code to be rewritten.") ".tar.xz")) (sha256 (base32 - "0nw9y8vjyz4r61v06p9msks5lm58pd91irmzg4k487vmv743h2pp")))) + "0nw9y8vjyz4r61v06p9msks5lm58pd91irmzg4k487vmv743h2pp")) + (patches (list (search-patch "guile-web.patch"))))) (build-system gnu-build-system) (native-inputs `(("pkgconfig" ,pkg-config))) (inputs `(("libffi" ,libffi) diff --git a/gnu/packages/patches/guile-web.patch b/gnu/packages/patches/guile-web.patch new file mode 100644 index 0000000..3ac6497 --- /dev/null +++ b/gnu/packages/patches/guile-web.patch @@ -0,0 +1,78 @@ +From 802a25b1ed5c738aa5f9d3d01f33eb89b22afd1b Mon Sep 17 00:00:00 2001 +From: Ludovic Courtès <ludo@gnu.org> +Date: Wed, 15 Jan 2014 22:41:23 +0000 +Subject: web: Don't throw if a response is longer than its Content-Length says. + +* module/web/response.scm (make-delimited-input-port): Read at most LEN + bytes from PORT, instead of trying to read more and returning an error + if more is available. Try again when 'get-bytevector-n!' return zero. +* test-suite/tests/web-response.test (example-1): Add garbage after the + body itself. +--- +diff --git a/module/web/response.scm b/module/web/response.scm +index 570a2d7..58e3f11 100644 +--- a/module/web/response.scm ++++ b/module/web/response.scm +@@ -1,6 +1,6 @@ + ;;; HTTP response objects + +-;; Copyright (C) 2010, 2011, 2012, 2013 Free Software Foundation, Inc. ++;; Copyright (C) 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc. + + ;; This library is free software; you can redistribute it and/or + ;; modify it under the terms of the GNU Lesser General Public +@@ -246,16 +246,21 @@ closes PORT, unless KEEP-ALIVE? is true." + bytes-read len)) + + (define (read! bv start count) +- (let ((ret (get-bytevector-n! port bv start count))) +- (if (eof-object? ret) +- (if (= bytes-read len) +- 0 +- (fail)) +- (begin +- (set! bytes-read (+ bytes-read ret)) +- (if (> bytes-read len) +- (fail) +- ret))))) ++ ;; Read at most LEN bytes in total. HTTP/1.1 doesn't say what to do ++ ;; when a server provides more than the Content-Length, but it seems ++ ;; wise to just stop reading at LEN. ++ (let ((count (min count (- len bytes-read)))) ++ (let loop ((ret (get-bytevector-n! port bv start count))) ++ (cond ((eof-object? ret) ++ (if (= bytes-read len) ++ 0 ; EOF ++ (fail))) ++ ((and (zero? ret) (> count 0)) ++ ;; Do not return zero since zero means EOF, so try again. ++ (loop (get-bytevector-n! port bv start count))) ++ (else ++ (set! bytes-read (+ bytes-read ret)) ++ ret))))) + + (define close + (and (not keep-alive?) +diff --git a/test-suite/tests/web-response.test b/test-suite/tests/web-response.test +index f9679f5..99b1293 100644 +--- a/test-suite/tests/web-response.test ++++ b/test-suite/tests/web-response.test +@@ -1,6 +1,6 @@ + ;;;; web-response.test --- HTTP responses -*- mode: scheme; coding: utf-8; -*- + ;;;; +-;;;; Copyright (C) 2010, 2011, 2012 Free Software Foundation, Inc. ++;;;; Copyright (C) 2010, 2011, 2012, 2014 Free Software Foundation, Inc. + ;;;; + ;;;; This library is free software; you can redistribute it and/or + ;;;; modify it under the terms of the GNU Lesser General Public +@@ -39,7 +39,9 @@ Content-Encoding: gzip\r + Content-Length: 36\r + Content-Type: text/html; charset=utf-8\r + \r +-abcdefghijklmnopqrstuvwxyz0123456789") ++abcdefghijklmnopqrstuvwxyz0123456789 ++-> Here is trailing garbage that should be ignored because it is ++ beyond Content-Length.") + + (define example-2 + "HTTP/1.1 200 OK\r -- 1.8.4.rc3 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH] gnu: patch Guile 2.0 to fix bug #14884. 2014-01-24 2:32 ` [PATCH] gnu: patch Guile 2.0 to fix bug #14884 Cyril Roelandt @ 2014-01-25 15:52 ` Ludovic Courtès 0 siblings, 0 replies; 10+ messages in thread From: Ludovic Courtès @ 2014-01-25 15:52 UTC (permalink / raw) To: Cyril Roelandt; +Cc: guix-devel Cyril Roelandt <tipecaml@gmail.com> skribis: > * gnu/packages/patches/guile-web.patch: New file. > * gnu-system.am: Add it > * gnu/packages/guile.scm (guile-2.0): Add the patch. Thanks for the patch. I am tempted to wait a bit to see how things go with Guile 2.0.10. Maybe we’ll just upgrade when it’s out. Ludo’. ^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#14884: TLS connection not terminated properly 2014-01-23 19:44 ` Andreas Enge 2014-01-24 2:32 ` [PATCH] gnu: patch Guile 2.0 to fix bug #14884 Cyril Roelandt @ 2014-01-24 2:34 ` Cyril Roelandt 2014-01-24 13:08 ` Ludovic Courtès 2 siblings, 0 replies; 10+ messages in thread From: Cyril Roelandt @ 2014-01-24 2:34 UTC (permalink / raw) To: Andreas Enge; +Cc: 14884 On 01/23/2014 08:44 PM, Andreas Enge wrote: > On Tue, Jan 21, 2014 at 05:56:05PM +0100, Ludovic Courtès wrote: >> I guess we’ll have to add that patch to Guile in ‘core-updates’, so we >> can actually benefit from it when building source derivations. > > Are the sources not fetched with the system guile in guix? So that we would > first need to "guix package -i guile" to profit from the patch? > I sent a patch to the mailing list, to apply on core-updates, as suggested by Ludo. After installing Guile from Guix and re-building a gazillion packages, I can install python-setuptools, which comes from PyPI. > In any case, a fix would be more than welcome, as none of the python modules > can currently be downloaded from pypi.python.org. And they have been garbage > collected on hydra. Development of Python packages is only possible on the core-updates branch though - that might be an issue. Cyril. ^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#14884: TLS connection not terminated properly 2014-01-23 19:44 ` Andreas Enge 2014-01-24 2:32 ` [PATCH] gnu: patch Guile 2.0 to fix bug #14884 Cyril Roelandt 2014-01-24 2:34 ` bug#14884: TLS connection not terminated properly Cyril Roelandt @ 2014-01-24 13:08 ` Ludovic Courtès 2014-01-24 13:14 ` Andreas Enge 2 siblings, 1 reply; 10+ messages in thread From: Ludovic Courtès @ 2014-01-24 13:08 UTC (permalink / raw) To: Andreas Enge; +Cc: 14884 Andreas Enge <andreas@enge.fr> skribis: > On Tue, Jan 21, 2014 at 05:56:05PM +0100, Ludovic Courtès wrote: >> I guess we’ll have to add that patch to Guile in ‘core-updates’, so we >> can actually benefit from it when building source derivations. > > Are the sources not fetched with the system guile in guix? So that we would > first need to "guix package -i guile" to profit from the patch? Derivations for the sources use the ‘guile’ package from Guix, and ‘guix download’ uses whatever Guile was found when Guix was configured. I think we’ll apply the patch Cyril provided, but it may be that Guile 2.0.10 will be out before we merge ‘core-updates’, in which case things will be even simpler. Ludo’. ^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#14884: TLS connection not terminated properly 2014-01-24 13:08 ` Ludovic Courtès @ 2014-01-24 13:14 ` Andreas Enge 2014-01-24 16:31 ` Ludovic Courtès 0 siblings, 1 reply; 10+ messages in thread From: Andreas Enge @ 2014-01-24 13:14 UTC (permalink / raw) To: Ludovic Courtès; +Cc: 14884 On Fri, Jan 24, 2014 at 02:08:15PM +0100, Ludovic Courtès wrote: > Derivations for the sources use the ‘guile’ package from Guix, and ‘guix > download’ uses whatever Guile was found when Guix was configured. To be sure I understood correctly: guix build hello -S uses guile from guix, and guix download ftp://.../hello.tar.gz uses the guile with which guix was compiled? On Fri, Jan 24, 2014 at 03:34:29AM +0100, Cyril Roelandt wrote: > Development of Python packages is only possible on the core-updates > branch though - that might be an issue. I do not think so. One could use the core-updates branch to download the package sources. Once they are in the nix store, they can be built with master. Andreas ^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#14884: TLS connection not terminated properly 2014-01-24 13:14 ` Andreas Enge @ 2014-01-24 16:31 ` Ludovic Courtès 0 siblings, 0 replies; 10+ messages in thread From: Ludovic Courtès @ 2014-01-24 16:31 UTC (permalink / raw) To: Andreas Enge; +Cc: 14884 Andreas Enge <andreas@enge.fr> skribis: > On Fri, Jan 24, 2014 at 02:08:15PM +0100, Ludovic Courtès wrote: >> Derivations for the sources use the ‘guile’ package from Guix, and ‘guix >> download’ uses whatever Guile was found when Guix was configured. > > To be sure I understood correctly: > guix build hello -S > uses guile from guix, and > guix download ftp://.../hello.tar.gz > uses the guile with which guix was compiled? Exactly. > On Fri, Jan 24, 2014 at 03:34:29AM +0100, Cyril Roelandt wrote: >> Development of Python packages is only possible on the core-updates >> branch though - that might be an issue. > > I do not think so. One could use the core-updates branch to download > the package sources. Once they are in the nix store, they can be built > with master. Right. Not convenient, but that won’t last long. Alternately, I think you can do: wget https://.../foo.tgz guile -c '(use-modules (guix)) \ (add-to-store (open-connection) "foo.tgz" #f "sha256" "foo.tgz")' Ludo’. ^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#14884: TLS connection not terminated properly 2014-01-21 16:56 ` Ludovic Courtès 2014-01-23 19:44 ` Andreas Enge @ 2014-03-29 13:21 ` Ludovic Courtès 1 sibling, 0 replies; 10+ messages in thread From: Ludovic Courtès @ 2014-03-29 13:21 UTC (permalink / raw) To: 14884-done ludo@gnu.org (Ludovic Courtès) skribis: > ludo@gnu.org (Ludovic Courtès) skribis: > >> As reported by Mark Weaver and others, fetching from >> https://archive.apache.org leads an error: >> >> $ guix build -S subversion --no-substitutes >> The following derivation will be built: >> /nix/store/0qm0bggyhrdhrk1ks8hs2pya5n0ikx57-subversion-1.7.8.tar.bz2.drv >> @ build-started /nix/store/0qm0bggyhrdhrk1ks8hs2pya5n0ikx57-subversion-1.7.8.tar.bz2.drv - x86_64-linux /nix/var/log/nix/drvs/0q//m0bggyhrdhrk1ks8hs2pya5n0ikx57-subversion-1.7.8.tar.bz2.drv.bz2 >> starting download of `/nix/store/i35q1vm2sl27sjhs7mx8n2m05056ya9x-subversion-1.7.8.tar.bz2' from `https://archive.apache.org/dist/subversion/subversion-1.7.8.tar.bz2'... >> https://archive.apache.org/.../subversion-1.7.8.tar.bz2 99.0% of 5882.7 KiBERROR: Throw to key `gnutls-error' with args `(#<gnutls-error-enum The TLS connection was non-properly terminated.> fill_session_record_port_input)'. >> failed to download "/nix/store/i35q1vm2sl27sjhs7mx8n2m05056ya9x-subversion-1.7.8.tar.bz2" from "https://archive.apache.org/dist/subversion/subversion-1.7.8.tar.bz2" > > We were discussing it on IRC and, boom!, I remembered that I fixed > something which may help with this: > > http://git.sv.gnu.org/cgit/guile.git/commit/?h=stable-2.0&id=802a25b1ed5c738aa5f9d3d01f33eb89b22afd1b > > And indeed, that patch fixes the problem. Now that Guile 2.0.11 is in Guix master, we can close this bug. Thanks, Ludo’. ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2014-03-29 13:22 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-07-16 20:50 bug#14884: TLS connection not terminated properly Ludovic Courtès 2014-01-21 16:56 ` Ludovic Courtès 2014-01-23 19:44 ` Andreas Enge 2014-01-24 2:32 ` [PATCH] gnu: patch Guile 2.0 to fix bug #14884 Cyril Roelandt 2014-01-25 15:52 ` Ludovic Courtès 2014-01-24 2:34 ` bug#14884: TLS connection not terminated properly Cyril Roelandt 2014-01-24 13:08 ` Ludovic Courtès 2014-01-24 13:14 ` Andreas Enge 2014-01-24 16:31 ` Ludovic Courtès 2014-03-29 13:21 ` Ludovic Courtès
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/guix.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.