all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Alain Schneble <a.s@realize.ch>
To: Eli Zaretskii <eliz@gnu.org>
Cc: larsi@gnus.org, j_l_domenech@yahoo.com, 22789@debbugs.gnu.org
Subject: bug#22789: 25.1.50; In last master build https connections stop working
Date: Sun, 28 Feb 2016 10:48:37 +0100	[thread overview]
Message-ID: <868u25p3m2.fsf@realize.ch> (raw)
In-Reply-To: <834mctbitq.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 28 Feb 2016 05:43:45 +0200")

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Alain Schneble <a.s@realize.ch>
>> Date: Sun, 28 Feb 2016 00:49:25 +0100
>> Cc: "José L. Doménech"
>> 	<j_l_domenech@yahoo.com>, 22789@debbugs.gnu.org
>> 
>> Now, if I do...
>> 
>> 	  if (errno == 0)
>> 	    errno = EAGAIN;
>> 
>> ...just after the call to set_errno above, guess what: It seems to work!
>
> This must be conditioned on something that requires EAGAIN.  Otherwise
> overriding the errno of zero sounds like a bad idea to me.

This was just a quick try, to better understand the behavior.  Not a
proposed solution.  Excuse me for not being precise.

> Why does the nchars == SOCKET_ERROR happen here at all, if winsock
> returns with an error of zero?  Isn't that strange?

Exactly, this was what I meant in the part you elided:

Alain Schneble <a.s@realize.ch> writes:

> At least for me, it will be an exercise for tomorrow to find the reason
> why pfn_WSAGetLastError returns 0 in this case.

I just had some time to investigate it further.  The WSAGetLastError
gets overridden in the call to pfn_ioctlsocket.  That's why errno is 0.

If I swap the order of the if statements in sys_write to look as
follows, then the reason for the SOCKET_ERROR is revealed:

      if (nchars == SOCKET_ERROR)
        {
	  DebPrint (("sys_write.send failed with error %d on socket %ld\n",
		     pfn_WSAGetLastError (), SOCK_HANDLE (fd)));
	  set_errno ();
	}

      /* Set the socket back to non-blocking if it was before,
	 for other operations that support it.  */
      if (fd_info[fd].flags & FILE_NDELAY)
	{
	  printf ("reset file_ndelay");
	  nblock = 1;
	  pfn_ioctlsocket (SOCK_HANDLE (fd), FIONBIO, &nblock);
	}

=> WSAENOTCONN (10057): Socket is not connected.  So that's the prove it
accesses the socket too early.

Alas, even though it seems to help at least for the test code I tried,
turning WSAENOTCONN into EAGAIN seems wrong after all.  It shouldn't try
to write to the socket before it is connected at all...(?)  Also the
code "wraps" pfn_send and turns it into a blocking call.  Not sure what
the implications are...

Nevertheless, don't you think the error handling in this code section is
not very elaborate and switching the order as shown above might be
better anyway?  sys_write is primarily about writing, not about
switching from non-blocking to blocking and back again...  Or shall it
somehow aggregate possible errors of both calls (pfn_send and
pfn_ioctlsocket)?






  reply	other threads:[~2016-02-28  9:48 UTC|newest]

Thread overview: 124+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-24 10:26 bug#22789: 25.1.50; In last master build https connections stop working José L. Doménech
2016-02-24 14:00 ` Lars Ingebrigtsen
2016-02-24 16:09   ` José L. Doménech
2016-02-24 18:06     ` Eli Zaretskii
2016-02-24 23:48       ` Lars Ingebrigtsen
2016-02-25  0:02         ` Lars Ingebrigtsen
2016-02-25  1:09           ` Lars Ingebrigtsen
2016-02-25 16:41           ` Eli Zaretskii
2016-02-26  2:29             ` Lars Ingebrigtsen
2016-02-26  9:36               ` Eli Zaretskii
2016-02-27  2:30                 ` Lars Ingebrigtsen
2016-02-27  2:43                   ` John Wiegley
2016-02-27  3:50                     ` Lars Ingebrigtsen
2016-02-27  8:14                       ` Eli Zaretskii
2016-02-27  3:49                   ` Lars Ingebrigtsen
2016-02-27  8:10                     ` Eli Zaretskii
2016-02-27  8:13                   ` Eli Zaretskii
2016-02-27 18:05           ` Alain Schneble
2016-02-27 22:38             ` Lars Ingebrigtsen
2016-02-27 23:06               ` Alain Schneble
2016-02-27 23:49                 ` Alain Schneble
2016-02-28  3:31                   ` Lars Ingebrigtsen
2016-02-28  9:58                     ` Alain Schneble
2016-02-28 16:53                     ` Eli Zaretskii
2016-02-29  2:37                       ` Lars Ingebrigtsen
2016-02-28  3:43                   ` Eli Zaretskii
2016-02-28  9:48                     ` Alain Schneble [this message]
2016-02-28 17:00                       ` Eli Zaretskii
2016-02-29  2:49                         ` Lars Ingebrigtsen
2016-02-29  3:43                           ` Eli Zaretskii
2016-02-29  4:38                             ` Lars Ingebrigtsen
2016-02-29  9:55                         ` Alain Schneble
2016-02-29 10:03                           ` Lars Ingebrigtsen
2016-02-29 17:57                             ` Alain Schneble
2016-02-29 18:45                               ` Eli Zaretskii
2016-02-29 21:22                                 ` Lars Ingebrigtsen
2016-03-01  3:35                                   ` Eli Zaretskii
2016-02-29 23:13                                 ` Alain Schneble
2016-03-01  0:41                                   ` Lars Ingebrigtsen
2016-03-01  3:41                                   ` Eli Zaretskii
2016-03-01  4:29                                     ` Lars Ingebrigtsen
2016-03-01  4:30                                     ` Lars Ingebrigtsen
2016-03-01  9:00                                       ` Andreas Schwab
2016-03-01 14:12                                         ` Lars Ingebrigtsen
2016-03-01 14:25                                           ` Alain Schneble
2016-03-01 14:43                                             ` Lars Ingebrigtsen
2016-03-01 15:59                                             ` Eli Zaretskii
2016-03-01 16:19                                               ` Alain Schneble
2016-03-01 17:00                                                 ` Eli Zaretskii
2016-03-01 17:09                                                   ` Alain Schneble
2016-03-01 17:22                                                     ` Eli Zaretskii
2016-03-01 17:55                                                       ` Alain Schneble
2016-03-01 18:13                                                         ` Eli Zaretskii
2016-03-01 16:33                                               ` Andreas Schwab
2016-03-01 15:53                                           ` Eli Zaretskii
2016-03-01 15:36                                     ` Alain Schneble
2016-03-01 16:05                                       ` Eli Zaretskii
2016-03-01 16:25                                         ` Alain Schneble
2016-03-04  8:56                                         ` Eli Zaretskii
2016-03-04 16:55                                           ` Alain Schneble
2016-03-04 21:36                                             ` Alain Schneble
2016-03-04 22:33                                               ` Alain Schneble
2016-03-05  8:23                                               ` Eli Zaretskii
2016-03-05 18:27                                                 ` Alain Schneble
2016-03-05 19:21                                                   ` Eli Zaretskii
2016-03-06 22:45                                                     ` Alain Schneble
2016-03-06 23:24                                                       ` Alain Schneble
2016-03-07  8:49                                                         ` Alain Schneble
2016-03-07 16:08                                                           ` Eli Zaretskii
2016-03-07 17:20                                                             ` Alain Schneble
2016-03-07 17:33                                                               ` Eli Zaretskii
2016-03-07 18:03                                                                 ` Alain Schneble
2016-03-07 18:10                                                                   ` Eli Zaretskii
2016-03-07 18:26                                                                     ` Alain Schneble
2016-03-07 16:07                                                         ` Eli Zaretskii
2016-03-07 16:47                                                           ` Alain Schneble
2016-03-07 22:21                                                           ` Alain Schneble
2016-03-08 16:40                                                             ` Eli Zaretskii
2016-03-08 16:43                                                               ` Alain Schneble
2016-03-10 14:45                                                             ` Eli Zaretskii
2016-03-10 14:59                                                               ` Alain Schneble
2016-03-06  9:31                                                   ` Lars Magne Ingebrigtsen
2016-03-06 15:24                                                     ` Eli Zaretskii
2016-03-05  8:46                                               ` Lars Magne Ingebrigtsen
2016-03-05 18:32                                                 ` Alain Schneble
2016-02-29 21:18                               ` Lars Ingebrigtsen
2016-02-29 23:20                                 ` Alain Schneble
2016-03-01  3:43                                   ` Eli Zaretskii
2016-03-01  5:17                                     ` Lars Ingebrigtsen
2016-03-01 15:46                                       ` Eli Zaretskii
2016-03-02 18:03                                         ` Lars Ingebrigtsen
2016-03-02 19:07                                           ` Alain Schneble
2016-03-02 19:15                                             ` Lars Ingebrigtsen
2016-03-02 19:38                                               ` Alain Schneble
2016-03-02 20:46                                                 ` Alain Schneble
2016-03-02 22:02                                                   ` Alain Schneble
2016-03-02 22:22                                                     ` Lars Ingebrigtsen
2016-03-02 22:38                                                       ` Alain Schneble
2016-03-03  0:07                                                         ` Alain Schneble
2016-03-03  5:32                                                           ` Lars Ingebrigtsen
2016-03-03  9:03                                                             ` Alain Schneble
2016-03-02 19:43                                           ` Eli Zaretskii
2016-03-03  5:23                                             ` Lars Ingebrigtsen
2016-03-04  8:51                                               ` Eli Zaretskii
2016-03-04 11:33                                                 ` Lars Ingebrigtsen
2016-03-04 14:48                                                   ` Eli Zaretskii
2016-03-05 12:26                                                     ` Lars Magne Ingebrigtsen
2016-03-05 13:24                                                       ` Eli Zaretskii
2016-03-06  9:33                                                         ` Lars Magne Ingebrigtsen
2016-03-06 15:26                                                           ` Eli Zaretskii
2016-03-06 18:33                                                             ` Lars Magne Ingebrigtsen
2016-03-06 18:41                                                               ` Eli Zaretskii
2016-03-04 11:37                                                 ` Lars Ingebrigtsen
2016-03-04 11:40                                                   ` Lars Ingebrigtsen
2016-03-04 15:41                                                     ` Eli Zaretskii
2016-03-04 15:43                                                       ` Lars Ingebrigtsen
2016-03-04 16:12                                                         ` Eli Zaretskii
2016-03-04 15:40                                                   ` Eli Zaretskii
2016-03-01 15:43                                     ` Alain Schneble
2016-03-01 16:07                                       ` Eli Zaretskii
2016-03-01 16:26                                         ` Alain Schneble
2016-02-28 16:47             ` Eli Zaretskii
2016-02-25  3:46         ` Eli Zaretskii
2016-02-25  5:00           ` Lars Ingebrigtsen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=868u25p3m2.fsf@realize.ch \
    --to=a.s@realize.ch \
    --cc=22789@debbugs.gnu.org \
    --cc=eliz@gnu.org \
    --cc=j_l_domenech@yahoo.com \
    --cc=larsi@gnus.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.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.