The Trunk: Network-ar.42.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: Network-ar.42.mcz

commits-2
Andreas Raab uploaded a new version of Network to project The Trunk:
http://source.squeak.org/trunk/Network-ar.42.mcz

==================== Summary ====================

Name: Network-ar.42
Author: ar
Time: 4 December 2009, 10:19:10 am
UUID: bd7d181a-24b5-ac4c-a9a3-28a2b472d669
Ancestors: Network-ul.41

Fixes for SMTPClient:
- http://bugs.squeak.org/view.php?id=6843
- http://bugs.squeak.org/view.php?id=6768
- Add an accessor for the localHostName in SMPTClient since Unix systems often return 'localhost.localdomain' or '0.0.0.0' from NetNameResolver localHostName which is not accepted by many MTAs. If client code knows the name from elsewhere (by means of configuration etc.) it can provide it explicitly.

=============== Diff against Network-ul.41 ===============

Item was changed:
  ----- Method: SMTPClient>>encodeString: (in category 'utility') -----
  encodeString: aString
+ | str dec out |
- | str dec |
  str := String new: (aString size * 4 / 3 + 3) ceiling.
  dec := Base64MimeConverter new.
  dec
+ mimeStream: (out := WriteStream on: str);
- mimeStream: (WriteStream on: str);
  dataStream: (ReadStream on: aString);
+ multiLine: false;
  mimeEncode.
+ ^out contents!
- ^ str!

Item was added:
+ ----- Method: SMTPClient>>localHostName: (in category 'public protocol') -----
+ localHostName: aString
+ "The local host name for purposes of identifying the the server.
+ If nil, NetNameResolver localHostName will be used."
+
+ ^self connectionInfo at: #localHostName put: aString!

Item was added:
+ ----- Method: SMTPClient>>localHostName (in category 'public protocol') -----
+ localHostName
+ "The local host name for purposes of identifying the the server.
+ If nil, NetNameResolver localHostName will be used."
+
+ ^self connectionInfo at: #localHostName ifAbsent: [NetNameResolver localHostName]!

Item was added:
+ ----- Method: SMTPClient>>useHelo: (in category 'public protocol') -----
+ useHelo: aBoolean
+ "Tell client to use HELO instead of EHLO. HELO is the old protocol and
+ an old server may require it instead of EHLO."
+
+ ^self connectionInfo at: #useHelo put: aBoolean!

Item was changed:
  ----- Method: SMTPClient>>login (in category 'private protocol') -----
  login
  self user ifNil: [^self].
+ self initiateSession.
  self sendCommand: 'AUTH LOGIN ' , (self encodeString: self user).
  [self checkResponse]
  on: TelnetProtocolError
  do: [ :ex | ex isCommandUnrecognized ifTrue: [^ self] ifFalse: [ex pass]].
  self sendCommand: (self encodeString: self password).
  self checkResponse!

Item was changed:
  ----- Method: SMTPClient>>initiateSession (in category 'private protocol') -----
  initiateSession
+ "EHLO <SP> <domain> <CRLF>"
- "HELO <SP> <domain> <CRLF>"
 
+ self sendCommand: (self useHelo ifTrue:['HELO '] ifFalse: ['EHLO ']) , self localHostName.
- "self checkResponse."
- self sendCommand: 'HELO ' , NetNameResolver localHostName.
  self checkResponse.
  !

Item was added:
+ ----- Method: SMTPClient>>useHelo (in category 'public protocol') -----
+ useHelo
+ "If client use HELO instead of EHLO. HELO is the old protocol and
+ an old server may require it instead of EHLO."
+
+ ^self connectionInfo at: #useHelo ifAbsent: [false]!

Item was removed:
- ----- Method: SMTPClient class>>openOnHost:port: (in category 'instance creation') -----
- openOnHost: hostIP port: portNumber
-
- | client |
- client := super openOnHost: hostIP port: portNumber.
- client initiateSession.
- ^client!