From c6760c2a413ae6d618268e937ee7f940062170dc Mon Sep 17 00:00:00 2001 From: pavel Date: Tue, 23 Jul 2019 21:11:39 +0200 Subject: reduce allocations in strip_port --- lib/rack/request.rb | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/rack/request.rb b/lib/rack/request.rb index 951fe8cb..4ffc1972 100644 --- a/lib/rack/request.rb +++ b/lib/rack/request.rb @@ -496,11 +496,18 @@ module Rack def strip_port(ip_address) # IPv6 format with optional port: "[2001:db8:cafe::17]:47011" # returns: "2001:db8:cafe::17" - return ip_address.gsub(/(^\[|\]:\d+$)/, '') if ip_address.include?('[') + sep_start = ip_address.index('[') + sep_end = ip_address.index(']') + if (sep_start && sep_end) + return ip_address[sep_start + 1, sep_end - 1] + end # IPv4 format with optional port: "192.0.2.43:47011" # returns: "192.0.2.43" - return ip_address.gsub(/:\d+$/, '') if ip_address.count(':') == 1 + sep = ip_address.index(':') + if (sep && ip_address.count(':') == 1) + return ip_address[0, sep] + end ip_address end -- cgit v1.2.3-24-ge0c7