@@ -2134,7 +2134,7 @@ def initialize(host, port_or_options = {},
2134
2134
else
2135
2135
@usessl = false
2136
2136
end
2137
- @responses = Hash . new ( [ ] . freeze )
2137
+ @responses = Hash . new { | h , k | h [ k ] = [ ] }
2138
2138
@tagged_responses = { }
2139
2139
@response_handlers = [ ]
2140
2140
@tagged_response_arrival = new_cond
@@ -2150,6 +2150,7 @@ def initialize(host, port_or_options = {},
2150
2150
if @greeting . nil?
2151
2151
raise Error , "connection closed"
2152
2152
end
2153
+ record_untagged_response_code ( @greeting )
2153
2154
if @greeting . name == "BYE"
2154
2155
raise ByeResponseError , @greeting
2155
2156
end
@@ -2214,10 +2215,7 @@ def receive_responses
2214
2215
end
2215
2216
when UntaggedResponse
2216
2217
record_response ( resp . name , resp . data )
2217
- if resp . data . instance_of? ( ResponseText ) &&
2218
- ( code = resp . data . code )
2219
- record_response ( code . name , code . data )
2220
- end
2218
+ record_untagged_response_code ( resp )
2221
2219
if resp . name == "BYE" && @logout_command_tag . nil?
2222
2220
@sock . close
2223
2221
@exception = ByeResponseError . new ( resp )
@@ -2295,6 +2293,13 @@ def get_response
2295
2293
return @parser . parse ( buff )
2296
2294
end
2297
2295
2296
+ def record_untagged_response_code ( resp )
2297
+ if resp . data . instance_of? ( ResponseText ) &&
2298
+ ( code = resp . data . code )
2299
+ record_response ( code . name , code . data )
2300
+ end
2301
+ end
2302
+
2298
2303
def record_response ( name , data )
2299
2304
unless @responses . has_key? ( name )
2300
2305
@responses [ name ] = [ ]
0 commit comments