From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 100008 invoked by alias); 25 Apr 2019 15:28:42 -0000 Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner@cygwin.com Mail-Followup-To: cygwin@cygwin.com Received: (qmail 99965 invoked by uid 89); 25 Apr 2019 15:28:42 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-3.4 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.1 spammy= X-HELO: smtp-out-no.shaw.ca Received: from smtp-out-no.shaw.ca (HELO smtp-out-no.shaw.ca) (64.59.134.9) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 25 Apr 2019 15:28:40 +0000 Received: from [192.168.1.114] ([24.64.172.44]) by shaw.ca with ESMTP id JgIeh9RFSsAGkJgIfhgEz3; Thu, 25 Apr 2019 09:28:38 -0600 Reply-To: Brian.Inglis@SystematicSw.ab.ca Subject: Re: bug: cygwin-devel v3.0.2-1 socket.h does not #define MSG_EOR per the POSIX standard To: cygwin@cygwin.com References: <0873126E9D101A4A983DE738F4346DBC9114A8F3@NAWESPSCXM03V.nadsuswe.nads.navy.mil> <20190424164358.GG30041@calimero.vinschen.de> <4e01e86d-83c9-5855-c4a5-29f5375dc2dc@cs.umass.edu> From: Brian Inglis Openpgp: preference=signencrypt Message-ID: <3a646fc6-82cb-1980-cc85-75cd4db6f3a0@SystematicSw.ab.ca> Date: Thu, 25 Apr 2019 15:28:00 -0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-IsSubscribed: yes X-SW-Source: 2019-04/txt/msg00174.txt.bz2 On 2019-04-24 14:50, Eric Blake wrote: > On 4/24/19 3:36 PM, Hans-Bernhard Bröker wrote: >> Am 24.04.2019 um 19:54 schrieb Eliot Moss: >>> On 4/24/2019 12:43 PM, Corinna Vinschen wrote: >> >>>> Since MSG_EOR isn't implemented in the underlying transport layer, >>>> there's no way to implement it in userspace.  That's why it's not >>>> defined in Cygwin's headers.  If you have an idea how to implement >>>> this in plain userspace, feel free to provide patches. >>> >>> I don't have a direct interest in this issue, but I do have a wondering. >>> If Cygwin fails to define an error code -- even if the error cannot >>> actually happen under Cygwin -- isn't that a problem when trying to >>> compile imported software?  >> > > Well, MSG_EOR is not an error, but we can certainly do better than not > defining it at all. My suggestion for the least-cost implementation: > > - add a define for MSG_EOR to a non-zero value that is bitwise distinct > from other required MSG_ values > - return EOPNOTSUPP on attempts to use the flag in > send()/sendmsg()/sendto() (POSIX permits that failure for protocols that > don't support it - and none of Cygwin's protocols support it) > - optionally, document that MSG_EOR will never be set in the results > returned by recvmsg() (POSIX says it will only be set on protocols that > support it - and none of Cygwin's protocols support it) > > This will at least let software compile that attempts to use it, and > hopefully that software is robust to the fact that send() may reject the > flag and that recvmsg() cannot reliably report use of that flag. > >> >> Either way, as Standardese goes, this is sufficiently unclear that it >> IMHO calls for a defect report to the governing body of this standard. > > You're welcome to do so: > http://austingroupbugs.net/main_page.php > > although I personally thought POSIX was clear enough that MSG_EOR is > required to be defined, even if only so that it can trigger send() > errors showing that it is unsupported. Would it be allowed and valid to #define MSG_EOR 0 to simplify lack of support? -- Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada This email may be disturbing to some readers as it contains too much technical detail. Reader discretion is advised. -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple