GNU bug report logs - #62990
30.0.50; UDP server closes connection upon receiving an empty packet

Previous Next

Package: emacs;

Reported by: Vasilij Schneidermann <mail <at> vasilij.de>

Date: Fri, 21 Apr 2023 10:38:01 UTC

Severity: normal

Found in version 30.0.50

Full log


View this message in rfc822 format

From: Vasilij Schneidermann <mail <at> vasilij.de>
To: Robert Pluim <rpluim <at> gmail.com>
Cc: 62990 <at> debbugs.gnu.org
Subject: bug#62990: 30.0.50; UDP server closes connection upon receiving an empty packet
Date: Sat, 9 Mar 2024 14:40:28 +0100
[Message part 1 (text/plain, inline)]
Hello again,

> Actually, it turned out to be a small change (on top of my previous
> patch)
> 
> diff --git a/src/process.c b/src/process.c
> index e3233f5ad89..eca1441062d 100644
> --- a/src/process.c
> +++ b/src/process.c
> @@ -6305,7 +6305,13 @@ read_and_dispose_of_process_output (struct Lisp_Process *p, char *chars,
>  	      coding->carryover_bytes);
>        p->decoding_carryover = coding->carryover_bytes;
>      }
> -  if (SBYTES (text) > 0)
> +  if (SBYTES (text) > 0
> +#ifdef DATAGRAM_SOCKETS
> +      || (SBYTES (text) == 0
> +	  && 0 <= p->outfd
> +	  && DATAGRAM_CHAN_P (p->outfd))
> +#endif
> +      )
>      /* FIXME: It's wrong to wrap or not based on debug-on-error, and
>         sometimes it's simply wrong to wrap (e.g. when called from
>         accept-process-output).  */

I somehow completely overlooked this second patch and can confirm that
with it, both the Emacs Lisp and Guile version of the server/client
behave identically. In other words, the UDP bug is completely fixed now.

I've done a cursory search on the web and did not find anything that
would send empty packets via UDP, so I do doubt it would break existing
code or need a opt-out setting.
[signature.asc (application/pgp-signature, inline)]

This bug report was last modified 1 year and 157 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.