From 9e79454b3d6476ff0da11ae7917b25edd8057f1d Mon Sep 17 00:00:00 2001 From: aamine Date: Tue, 3 Jul 2001 19:03:16 +0000 Subject: aamine * lib/net/http.rb (HTTP#request_by_name): bug fix. * lib/net/http.rb: does not write Connection: by default. * lib/net/protocol.rb: "start" for started protocol is an error. * lib/net/protocol.rb: "finish" for finished protocol is an error. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1565 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 10 ++++++++++ lib/net/http.rb | 17 ++++++++++++----- lib/net/pop.rb | 2 +- lib/net/protocol.rb | 7 ++++--- lib/net/smtp.rb | 4 ++-- 5 files changed, 29 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 053c14096f..c786cc3ca6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +Wed Jul 4 04:07:36 2001 Minero Aoki + + * lib/net/http.rb (HTTP#request_by_name): bug fix. + + * lib/net/http.rb: does not write Connection: by default. + + * lib/net/protocol.rb: "start" for started protocol is an error. + + * lib/net/protocol.rb: "finish" for finished protocol is an error. + Wed Jul 4 03:17:31 2001 Minero Aoki * lib/net/http.rb: new method HTTP#request_by_name (test) diff --git a/lib/net/http.rb b/lib/net/http.rb index f0c7dbff6c..20c8d0107d 100644 --- a/lib/net/http.rb +++ b/lib/net/http.rb @@ -203,7 +203,7 @@ Yes, this is not thread-safe. : finish finishes HTTP session. - If HTTP session had not started, do nothing and return false. + If HTTP session had not started, raises an IOError. : proxy? true if self is a HTTP proxy class @@ -610,7 +610,7 @@ module Net req.response end - def request_by_name( name, path, header, body = nil ) + def request_by_name( name, path, header = nil, body = nil ) r = ::Net::NetPrivate::HTTPGenericRequest.new( name, body ? true : false, true, path, header ) @@ -622,17 +622,20 @@ module Net def connecting( req ) - req['connection'] ||= 'keep-alive' + unless active? then + implicit = true + req['connection'] ||= 'close' + end + if not @socket then start - req['connection'] = 'close' elsif @socket.closed? then re_connect end if not req.body_exist? or @seems_1_0_server then req['connection'] = 'close' end - req['host'] = addr_port + req['host'] = addr_port() yield req req.response.__send__ :terminate @@ -651,6 +654,10 @@ module Net D 'Conn close' @socket.close end + + if implicit then + finish + end end def keep_alive?( req, res ) diff --git a/lib/net/pop.rb b/lib/net/pop.rb index 49751a1923..793532fffc 100644 --- a/lib/net/pop.rb +++ b/lib/net/pop.rb @@ -201,7 +201,7 @@ net/pop also supports APOP authentication. There's two way to use APOP: : finish finishes POP3 session. - If POP3 session had not be started, does nothing and return false. + If POP3 session had not be started, raises an IOError. : mails an array of Net::POPMail objects. diff --git a/lib/net/protocol.rb b/lib/net/protocol.rb index d810ac2f9d..aba2256b6e 100644 --- a/lib/net/protocol.rb +++ b/lib/net/protocol.rb @@ -122,7 +122,7 @@ module Net # def start( *args ) - return false if active? + active? and raise IOError, 'protocol has been opened already' if block_given? then begin @@ -134,6 +134,7 @@ module Net else _start args end + nil end private @@ -177,12 +178,12 @@ module Net public def finish - return false unless active? + active? or raise IOError, 'already closed protocol' do_finish if @command and not @command.critical? disconnect @active = false - true + nil end private diff --git a/lib/net/smtp.rb b/lib/net/smtp.rb index c56d2c9e32..186ffa291a 100644 --- a/lib/net/smtp.rb +++ b/lib/net/smtp.rb @@ -108,8 +108,8 @@ send or reject SMTP session by this data. : start( helo_domain = , account = nil, password = nil, authtype = nil ) : start( helo_domain = , account = nil, password = nil, authtype = nil ) {|smtp| .... } opens TCP connection and starts SMTP session. - If protocol had been started, do nothing and return false. HELO_DOMAIN is a domain that you'll dispatch mails from. + If protocol had been started, raises IOError. When this methods is called with block, give a SMTP object to block and close session after block call finished. @@ -141,7 +141,7 @@ send or reject SMTP session by this data. : finish finishes SMTP session. - If SMTP session had not started, do nothing and return false. + If SMTP session had not started, raises an IOError. : send_mail( mailsrc, from_addr, *to_addrs ) This method sends MAILSRC as mail. A SMTP object read strings -- cgit v1.2.3