mirror of
https://github.com/python/cpython.git
synced 2025-12-04 16:43:27 +00:00
Fix for SF bug #123625: some newsservers need 'authinfo' *before* 'mode
readers', others *after*. (Netscape Collabra for the first category, INN-which-forks-nnrpd for the second.)
This commit is contained in:
parent
19030a08fb
commit
47adcbafc0
1 changed files with 20 additions and 0 deletions
|
|
@ -112,12 +112,25 @@ class NNTP:
|
||||||
self.file = self.sock.makefile('rb')
|
self.file = self.sock.makefile('rb')
|
||||||
self.debugging = 0
|
self.debugging = 0
|
||||||
self.welcome = self.getresp()
|
self.welcome = self.getresp()
|
||||||
|
|
||||||
|
# 'mode reader' is sometimes necessary to enable 'reader' mode.
|
||||||
|
# However, the order in which 'mode reader' and 'authinfo' need to
|
||||||
|
# arrive differs between some NNTP servers. Try to send
|
||||||
|
# 'mode reader', and if it fails with an authorization failed
|
||||||
|
# error, try again after sending authinfo.
|
||||||
|
readermode_afterauth = 0
|
||||||
if readermode:
|
if readermode:
|
||||||
try:
|
try:
|
||||||
self.welcome = self.shortcmd('mode reader')
|
self.welcome = self.shortcmd('mode reader')
|
||||||
except NNTPPermanentError:
|
except NNTPPermanentError:
|
||||||
# error 500, probably 'not implemented'
|
# error 500, probably 'not implemented'
|
||||||
pass
|
pass
|
||||||
|
except NNTPTemporaryError, e:
|
||||||
|
if user and e.response[:3] == '480':
|
||||||
|
# Need authorization before 'mode reader'
|
||||||
|
readermode_afterauth = 1
|
||||||
|
else:
|
||||||
|
raise
|
||||||
if user:
|
if user:
|
||||||
resp = self.shortcmd('authinfo user '+user)
|
resp = self.shortcmd('authinfo user '+user)
|
||||||
if resp[:3] == '381':
|
if resp[:3] == '381':
|
||||||
|
|
@ -128,6 +141,13 @@ class NNTP:
|
||||||
'authinfo pass '+password)
|
'authinfo pass '+password)
|
||||||
if resp[:3] != '281':
|
if resp[:3] != '281':
|
||||||
raise NNTPPermanentError(resp)
|
raise NNTPPermanentError(resp)
|
||||||
|
if readermode_afterauth:
|
||||||
|
try:
|
||||||
|
self.welcome = self.shortcmd('mode reader')
|
||||||
|
except NNTPPermanentError:
|
||||||
|
# error 500, probably 'not implemented'
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
# Get the welcome message from the server
|
# Get the welcome message from the server
|
||||||
# (this is read and squirreled away by __init__()).
|
# (this is read and squirreled away by __init__()).
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue