I think the best solution would be to simply state in the documentation of
my implementation that "throttling receives on SSL sockets will
significantly reduce data receive but will not guarantee a total halt".

Agree?

What do you think of the way Node.js handles this? They _must_ be using
some kind of internal backup queue for cases like these, right?

2018-05-19 11:02 GMT+02:00 Alex H <alexhult...@gmail.com>:

> Okay that's a good theoretical answer but practically not very useful.
>
> I know for instance Node.js to implement their Streams interface with both
> TCP and SSL sockets. They both have pause / resume functions for
> receive-throttling and I've tested it with SSL and it seems to work somehow.
>
> One solution (I guess?) would be to stop polling for readable until
> SSL_write demands data then immediately stop polling for readable again
> once SSL_write is happy. In the case of getting unwanted data while
> throttling then SSL_peek can be used instead of SSL_read. That would not
> guarantee no buildup but would work for the most part, right?
>
> Do you see any flaw with this? Could it still fail due to mass buildup
> when throttling for long?
>
> Den lör 19 maj 2018 04:57Salz, Rich via openssl-users <
> openssl-users@openssl.org> skrev:
>
>> TLS is a bidirectional protocol.  You can’t throttle only one side.
>>
>>
>>
>> *From: *Alex H <alexhult...@gmail.com>
>> *Reply-To: *openssl-users <openssl-users@openssl.org>
>> *Date: *Friday, May 18, 2018 at 7:21 PM
>> *To: *openssl-users <openssl-users@openssl.org>
>> *Subject: *[openssl-users] Receive throttling on SSL sockets
>>
>>
>>
>> How do you properly implement receive throttling on SSL sockets without
>> hindering writing?
>>
>>
>>
>> As opposed to raw TCP sockets, an SSL socket cannot be receive-throttled
>> simply by stop polling for readable events on the underlying raw TCP
>> socket. SSL_write still could require reading of data so simply stop
>> polling for readable would potentially hinder writing of data which is not
>> okay.
>>
>>
>>
>> Is there any such receive-throttling functionality in the SSL protocol
>> itself? I don't see how SSL_peek would solve the issue since I would still
>> be buffering (potentially uncontrolled amount of) data in a BIO.
>>
>>
>>
>> Even if I would _only_ enable readable polling when _absolutely needed_
>> as per SSL_write error, I still cannot guarantee not reading a chunk of
>> data (which I would then need to buffer up in a BIO since the application
>> is not expecting it).
>>
>>
>>
>> How are we supposed to solve this issue without potentially building up
>> backpressure?
>>
>>
>>
>> Thanks
>> --
>> openssl-users mailing list
>> To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-users
>>
>
-- 
openssl-users mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-users

Reply via email to