-
Notifications
You must be signed in to change notification settings - Fork 228
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support sockatmark()
-like functionality
#450
Comments
I think a wrapper around |
Do you have any preference as far as naming? |
Maybe |
I'd prefer not to call it anything involving |
OOB/out-of-band is fine with me. |
socket2
cannot currently handle the TCP urgent flag correctly according to specifications. Per https://www.rfc-editor.org/rfc/rfc1122#page-84 and https://www.rfc-editor.org/rfc/rfc6093#page-5, the intended standard method of handling the urgent flag in TCP is to notify the process out-of-band that there is an urgent mark, at which point the process moves into an "urgent mode" until reaching the urgent mark in-band.socket2
is currently missing the ability for the process to detect when it has reached the urgent mark.While #296 suggests that polling is out-of-scope for
socket2
, this shouldn't be necessary for implementing this functionality. Using the POSIX socket API, a process can setSO_OOBINLINE
as a socket option (to whichset_out_of_band_inline()
is equivalent) and usesockatmark()
to detect when the urgent mark is reached, independent of polling mechanism.The
SIOCATMARK
ioctl
is the basis ofsockatmark()
and could be consumed bysocket2
to provide this functionality. rust-lang/libc#3275 intends to expose this for Unix-like systems and it is exposed in the WinSock Rust crate. A synchronous functionis_at_urgent_mark(&self) -> bool
or similar would address this gap.The text was updated successfully, but these errors were encountered: