Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
-
Windows client connecting to SSL broker
Description
Steps to reproduce:
- Connect your receiver to an SSL-capable broker. The receiver has to be running on Windows.
- Set the idle_timeout connection option to e.g. 2 seconds in your proton::messaging_handler instance.
- In the on_message callback, sleep for longer than idle_timeout. This should trigger the on_transport_error callback with a amqp:resource-limit-exceeded: local-idle-timeout expired error. On Windows this does not happen.
I saw that the above scenario worked correctly when connecting to a non-SSL broker but failed with an SSL broker. I looked at the difference between the two code paths and found that for the same input (transport->output_buffer being empty and transport->close_sent == true) transport.c returns PN_EOS while schannel.c returned 0. After ensuring that schannel.c matches the behaviour of transport.c, the problem went away.
Suggested fix: https://github.com/apache/qpid-proton/pull/255