1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* lib/net/imap.rb (receive_responses): raise exception to

client_thread. Thanks to William Webber.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4310 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
shugo 2003-08-04 01:02:16 +00:00
parent 79c0605534
commit 594eb2e0fe
2 changed files with 38 additions and 17 deletions

View file

@ -1,3 +1,8 @@
Mon Aug 4 10:00:47 2003 Shugo Maeda <shugo@ruby-lang.org>
* lib/net/imap.rb (receive_responses): raise exception to
client_thread. Thanks to William Webber.
Mon Aug 4 09:22:53 2003 William Webber <wew@williamwebber.com> Mon Aug 4 09:22:53 2003 William Webber <wew@williamwebber.com>
* lib/net/imap.rb: convert RD to RDoc. * lib/net/imap.rb: convert RD to RDoc.

View file

@ -206,6 +206,9 @@ module Net
# Returns all response handlers. # Returns all response handlers.
attr_reader :response_handlers attr_reader :response_handlers
# The thread to receive exceptions.
attr_accessor :client_thread
# Flag indicating a message has been seen # Flag indicating a message has been seen
SEEN = :Seen SEEN = :Seen
@ -841,13 +844,23 @@ module Net
raise ByeResponseError, resp[0] raise ByeResponseError, resp[0]
end end
@client_thread = Thread.current
@receiver_thread = Thread.start { @receiver_thread = Thread.start {
receive_responses receive_responses
} }
end end
def receive_responses def receive_responses
while resp = get_response while true
begin
resp = get_response
rescue Exception
@sock.close
@client_thread.raise($!)
break
end
break unless resp
begin
synchronize do synchronize do
case resp case resp
when TaggedResponse when TaggedResponse
@ -864,6 +877,9 @@ module Net
handler.call(resp) handler.call(resp)
end end
end end
rescue Exception
@client_thread.raise($!)
end
end end
end end