Boost logo

Boost Users :

Subject: Re: [Boost-users] Too many EOF's using boost::asio
From: ustulation (ustulation_at_[hidden])
Date: 2013-08-31 04:23:35


Lars Viklund wrote
> On Fri, Aug 30, 2013 at 11:25:39PM +0200, Jens Weller wrote:
>> > Gesendet: Freitag, 30. August 2013 um 23:09 Uhr
>> > Von: ustulation <

> ustulation@

> >
>> > An:

> boost-users_at_.boost

>> > Betreff: [Boost-users] Too many EOF's using boost::asio
>> >
>> > //m_writeBuffer is boost::asio::streambuf..m_writeQueue is
>> > std::deque
> <std::string>
>> > m_writeBuffer.sputn(&m_writeQueue.at(0)[0],
>> m_writeQueue.at(0).size());
>>
>> Hm. How big is your data? deque is not like vector giving you an array of
>> elements.
>> std::deque splits internally into differen chunks, maybe your problems
>> come from this.
>> I can't really see that using deque in this way would be safe.
>> If your data is always smaller then the chunksize of deque,
>> things are ok, other wise, well you're surely not getting what you
>> expect.
>
> His code is accessing the underlying storage of a std::string, that
> happens to be in a deque, which is fine as long as you're not
> invalidating the elements of the deque.
> --
> Lars Viklund |

> zao_at_.umu

> _______________________________________________
> Boost-users mailing list

> Boost-users_at_.boost

> http://lists.boost.org/mailman/listinfo.cgi/boost-users

Yes, the only assumption i make here is that std::string would store data
contiguously and as I use c++11 I think this is the case (the speed of sputn
and sgetn is too tempting to let go)

Lars Viklund wrote
> Anyway, this might be a manifestation of the 1.54.0 bug with
> Boost.ASIO+IOCP having spurious EOFs on Windows:
> https://svn.boost.org/trac/boost/ticket/8967
>
> --
> Lars Viklund

Oh, I see! We had started the project using boost 1.53 and had done testing
then. I suspect we had seen no such problems hence was not caught then. On
silently upgrading to boost 1.54 the only thing we cared was compilation
which was successful at once. The documentations hadn't changed and we
didn't care much, but I guess the problem lurked all the time since then.
Only now on redoing some alpha test cases we realized.

So what would you suggest? And though i didn't mention - you are right, it
/is/ on Windows. Do I use the patch in the link you mentioned (because there
seems to be some disagreement on its philosophy) or has christopher kohlhoff
(I infer he's the asio developer) done something about it?

Thanks

--
View this message in context: http://boost.2283326.n4.nabble.com/Too-many-EOF-s-using-boost-asio-tp4651173p4651187.html
Sent from the Boost - Users mailing list archive at Nabble.com.

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