Subject: bug#32452: 26.1; gnutls_try_handshake maxes out cpu retrying when server is a bit busy

From: Eli Zaretskii <[email-masked]>
Date: Sat, 05 Mar 2022 19:47:13 +0200

> From: Lars Ingebrigtsen <[email-masked]>
> Cc: [email-masked],  [email-masked],  [email-masked]
> Date: Sat, 05 Mar 2022 18:11:33 +0100
> 
> Eli Zaretskii <[email-masked]> writes:
> 
> > mod-test.c calls nanosleep, so it needs to be linked against libgnu.a,
> > I think.  (We should have done that to begin with, since mod-test.c
> > includes config.h and headers that have Gnulib replacements.)
> 
> The following seems to do the trick (and simplifies the rule slightly).
> Does this look correct to you?
> 
> diff --git a/test/Makefile.in b/test/Makefile.in
> index 708c4b2fb0..09f1e0f005 100644
> --- a/test/Makefile.in
> +++ b/test/Makefile.in
> @@ -283,9 +283,9 @@ $(test_module): $(test_module:
>  	$(AM_V_CCLD)${MKDIR_P} $(dir $@)
>  	$(AM_V_at)$(CC) -shared $(CPPFLAGS) $(MODULE_CFLAGS) $(LDFLAGS) \
>  	  -o $@ $< $(LIBGMP) \
> +	  ../lib/libgnu.a \
>  	  $(and $(GMP_H),$(srcdir)/../lib/mini-gmp-gnulib.c) \
> -	  $(FREE_SOURCE_$(REPLACE_FREE)) \
> -	  $(srcdir)/../lib/timespec.c $(srcdir)/../lib/gettime.c
> +	  $(FREE_SOURCE_$(REPLACE_FREE))
>  endif

I'd put libgnu.a last, after all the sources.  It's safer, since ld is
a one-pass linker, so it needs to see the libraries after it saw all
the sources.