Boost logo

Boost Users :

Subject: Re: [Boost-users] [asio] SSL async_shutdown() never finishes if called when async_read_some() is in progress
From: Franz Fehringer (fehrin2_at_[hidden])
Date: 2018-04-06 14:49:48


It's Boris Karloff but Chris(topher) Kohlhoff :-)

Am 06.04.2018 um 16:37 schrieb Richard Hodges via Boost-users:
>
>
> On 6 April 2018 at 16:29, Alexander D. via Boost-users
> <boost-users_at_[hidden] <mailto:boost-users_at_[hidden]>> wrote:
>
> On April 6, 2018 9:55 PM, Vinnie Falco via Boost-users
> <boost-users_at_[hidden] <mailto:boost-users_at_[hidden]>>
> wrote:
> > On Fri, Apr 6, 2018 at 6:11 AM, Alexander D. via Boost-users
> > <boost-users_at_[hidden]
> <mailto:boost-users_at_[hidden]>> wrote:
> >>>> The only solution I can think of would be to cancel the read
> operation, but there's no portable way in asio to do this.
> >>>
> >>>     sock.next_layer().cancel();
> >>>
> >>> ?
> >>
> >> Per ASIO Reference:
> >>
> >> "Calls to cancel() will always fail with
> boost::asio::error::operation_not_supported when run on Windows
> XP, Windows Server 2003, and earlier versions of Windows, unless
> BOOST_ASIO_ENABLE_CANCELIO is defined. However, the CancelIo
> function has two issues that should be considered before enabling
> its use:
> >> ..."
> >>
> >> which renders cancel() non-portable.
> >
> > I consider the issues with cancel present in Windows XP and Windows
> > Server 2003 to be sufficiently problematic that it is not worth
> taking
> > them into account when designing robust network applications (I do
> > develop mostly on Windows). Unless you have a specific business need
> > to support those defective operating systems, I would just ignore
> > them.
>
> Yes, I do need the program to work on at least Windows XP.
>
> However, even if cancel() is used, it is a workaround, not a
> solution. If you run the code I supplied, you'll notice that
> async_read_some() is actually finished with a "stream truncated"
> error, quite similar to "canceling" the read. The problem is on
> async_shutdown()'s handler not being called, and it's not
> mentioned anywhere in the reference. Why can't we shutdown a
> stream while reading from it (since we can close a socket while
> reading)?
>
>
> In the past, when I have had queries about the inner workings and
> design decisions behind ASIO, I have emailed the author, Chris
> Karloff. I am sure he is a busy guy but he has taken the trouble to
> answer helpfully in the past. It may be worth dropping him a line and
> asking for a suggestion.
>
> He didn't charge me but having received help twice now, I think it
> would be rude of me not to offer him a few hours consultancy if I
> needed his help again. 
>
> https://think-async.com/Asio/CommercialSupport
>
>
>
>  
>
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden] <mailto:Boost-users_at_[hidden]>
> https://lists.boost.org/mailman/listinfo.cgi/boost-users
> <https://lists.boost.org/mailman/listinfo.cgi/boost-users>
>
>
>
>
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> https://lists.boost.org/mailman/listinfo.cgi/boost-users



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net