Opened 6 years ago
#12545 new Bugs
stream_socket_service forcibly takes responsibility for closing the native_handle
| Reported by: | Owned by: | chris_kohlhoff | |
|---|---|---|---|
| Milestone: | To Be Determined | Component: | asio |
| Version: | Boost 1.61.0 | Severity: | Problem |
| Keywords: | native_handle close | Cc: |
Description
When using the basic_stream_socket constructor with a native_handle_type, it seems that the service will call close() on it upon destruction.
I have no expectation on this behavior, but this should be stressed in the documentation. Using this constructor (or the assign() method) is very handy when dealing with third-parties, but those very same third-parties can have the same policy of auto-closing.
This will lead to double closing, which is the best way for data corruption in a process that constantly opens and closes files.
I will go for a call to dup() before using the ip::tcp::socket for now.
