mirror of
https://github.com/faye/websocket-driver-ruby.git
synced 2025-11-01 13:59:38 +00:00
9ce857b3d4
When originally implemented, we still supported Ruby 1.8, which necessitated checking for encoding methods and using a regex to validate UTF-8. These checks are now gone. We tagged many strings as binary when not strictly necessary, either because we were just going to iterate their bytes or because we were going to hand them off to the caller which should just write them directly to a socket. Strings used as buffers to accumulate streaming input are still tagged as binary to avoid encoding collision/conversion. The places where we do need to tag as UTF-8 (i.e. just before emitting to the application) remain, but copy the string if necessary. This allows us to work with frozen strings. Finally, strings passed in via the Driver#text method should be *transcoded* to UTF-8 if necessary, not merely tagged. The Ruby String#encode method produces a new string so this should also be safe with frozen strings.