@@ -2128,7 +2128,7 @@ def initialize(host, port_or_options = {},
2128
2128
else
2129
2129
@usessl = false
2130
2130
end
2131
- @responses = Hash . new ( [ ] . freeze )
2131
+ @responses = Hash . new { | h , k | h [ k ] = [ ] }
2132
2132
@tagged_responses = { }
2133
2133
@response_handlers = [ ]
2134
2134
@tagged_response_arrival = new_cond
@@ -2144,6 +2144,7 @@ def initialize(host, port_or_options = {},
2144
2144
if @greeting . nil?
2145
2145
raise Error , "connection closed"
2146
2146
end
2147
+ record_untagged_response_code ( @greeting )
2147
2148
if @greeting . name == "BYE"
2148
2149
raise ByeResponseError , @greeting
2149
2150
end
@@ -2208,10 +2209,7 @@ def receive_responses
2208
2209
end
2209
2210
when UntaggedResponse
2210
2211
record_response ( resp . name , resp . data )
2211
- if resp . data . instance_of? ( ResponseText ) &&
2212
- ( code = resp . data . code )
2213
- record_response ( code . name , code . data )
2214
- end
2212
+ record_untagged_response_code ( resp )
2215
2213
if resp . name == "BYE" && @logout_command_tag . nil?
2216
2214
@sock . close
2217
2215
@exception = ByeResponseError . new ( resp )
@@ -2289,6 +2287,13 @@ def get_response
2289
2287
return @parser . parse ( buff )
2290
2288
end
2291
2289
2290
+ def record_untagged_response_code ( resp )
2291
+ if resp . data . instance_of? ( ResponseText ) &&
2292
+ ( code = resp . data . code )
2293
+ record_response ( code . name , code . data )
2294
+ end
2295
+ end
2296
+
2292
2297
def record_response ( name , data )
2293
2298
unless @responses . has_key? ( name )
2294
2299
@responses [ name ] = [ ]
0 commit comments