classification
Title: test_ssl failure
Type: behavior Stage: committed/rejected
Components: Extension Modules, Tests Versions: Python 2.7
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: pitrou Nosy List: janssen, kbk, kbriggs, orsenthil, pitrou
Priority: high Keywords: patch

Created on 2009-10-14 22:41 by pitrou, last changed 2011-09-26 13:30 by kbriggs. This issue is now closed.

Files
File name Uploaded Description Edit
ssl_newbuf.patch pitrou, 2009-10-14 22:55
Messages (9)
msg94044 - (view) Author: Antoine Pitrou (pitrou) * (Python committer) Date: 2009-10-14 22:41
This is due to r75412 (yes, mine). The proper fix would be to add
support for the new buffer API to the _ssl module.


testSocketServer (test.test_ssl.ThreadedTests) ... 
 server (('127.0.0.1', 52011):52011 ('AES256-SHA', 'TLSv1/SSLv3', 256)):
   [15/Oct/2009 00:42:18] "GET /keycert.pem HTTP/1.0" 200 -
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 48099)
Traceback (most recent call last):
  File "/home/antoine/cpython/__svn__/Lib/SocketServer.py", line 282, in
_handle_request_noblock
    self.process_request(request, client_address)
  File "/home/antoine/cpython/__svn__/Lib/SocketServer.py", line 308, in
process_request
    self.finish_request(request, client_address)
  File "/home/antoine/cpython/__svn__/Lib/SocketServer.py", line 321, in
finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/home/antoine/cpython/__svn__/Lib/SocketServer.py", line 639, in
__init__
    self.finish()
  File "/home/antoine/cpython/__svn__/Lib/SocketServer.py", line 692, in
finish
    self.wfile.flush()
  File "/home/antoine/cpython/__svn__/Lib/socket.py", line 300, in flush
    self._sock.sendall(view[write_offset:write_offset+buffer_size])
  File "/home/antoine/cpython/__svn__/Lib/ssl.py", line 203, in sendall
    v = self.send(data[count:])
  File "/home/antoine/cpython/__svn__/Lib/ssl.py", line 94, in <lambda>
    self.send = lambda data, flags=0: SSLSocket.send(self, data, flags)
  File "/home/antoine/cpython/__svn__/Lib/ssl.py", line 174, in send
    v = self._sslobj.write(data)
TypeError: must be string or read-only buffer, not memoryview
----------------------------------------

Traceback (most recent call last):
  File "/home/antoine/cpython/__svn__/Lib/test/test_ssl.py", line 972,
in testSocketServer
    f = urllib.urlopen(url)
  File "/home/antoine/cpython/__svn__/Lib/urllib.py", line 87, in urlopen
    return opener.open(url)
  File "/home/antoine/cpython/__svn__/Lib/urllib.py", line 206, in open
    return getattr(self, name)(url)
  File "/home/antoine/cpython/__svn__/Lib/urllib.py", line 445, in
open_https
    'got a bad status line', None)
IOError: ('http protocol error', 0, 'got a bad status line', None)
ERROR
msg94048 - (view) Author: Antoine Pitrou (pitrou) * (Python committer) Date: 2009-10-14 22:54
Here is a possible patch.
msg94123 - (view) Author: Kurt B. Kaiser (kbk) * (Python committer) Date: 2009-10-16 03:53
Reviewed, built, tests ok.

Linux trader 2.6.18-ARCH #1 SMP PREEMPT Sun Nov 19 09:14:35 CET 2006 
i686 Intel(R) Pentium(R) 4 CPU 2.40GHz GenuineIntel GNU/Linux

vote +1  weight +0.1 :-)
msg94245 - (view) Author: Kurt B. Kaiser (kbk) * (Python committer) Date: 2009-10-19 17:12
Is there some reason that this is not being checked
in?  The build has been broken for five days.  IMO,
either revert the offending code or check this in.
msg94246 - (view) Author: Antoine Pitrou (pitrou) * (Python committer) Date: 2009-10-19 17:36
I was hoping for Bill (the _ssl maintainer)'s opinion on this, but
you're right, it should be checked in.
msg94247 - (view) Author: Antoine Pitrou (pitrou) * (Python committer) Date: 2009-10-19 18:00
Committed in r75529.
msg144407 - (view) Author: Keith Briggs (kbriggs) Date: 2011-09-22 11:24
I am still getting this error with SocketServer in Python 2.7.2, even though it looks the same as was fixed in Issue7133:

  File "/usr/local/lib/python2.7/SocketServer.py", line 284, in _handle_request_noblock
    self.process_request(request, client_address)
  File "/usr/local/lib/python2.7/SocketServer.py", line 310, in process_request
    self.finish_request(request, client_address)
  File "/usr/local/lib/python2.7/SocketServer.py", line 323, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/usr/local/lib/python2.7/SocketServer.py", line 641, in __init__
    self.finish()
  File "/usr/local/lib/python2.7/SocketServer.py", line 694, in finish
    self.wfile.flush()
  File "/usr/local/lib/python2.7/socket.py", line 303, in flush
    self._sock.sendall(view[write_offset:write_offset+buffer_size])
TypeError: must be string or read-only buffer, not memoryview


Keith
msg144536 - (view) Author: Senthil Kumaran (orsenthil) * (Python committer) Date: 2011-09-26 13:15
Keith, was your python compiled with ssl? Any extra information to reproduce this can help. (Download 2.7.2 from python.org, do a ./configure;make and verify if this can bug can be reproduced).
msg144537 - (view) Author: Keith Briggs (kbriggs) Date: 2011-09-26 13:30
Senthil: thanks for the reply.   That's how I did build python 2.7.2 anyway.   But I can't see anything about SSL in the generated config files.    However, on another system (Fedora 15 with python 2.7.1), I don't get the problem.
In case it's useful, I was trying to run the recipe http://code.activestate.com/recipes/573444-threaded-documenting-xml-rpc-server-over-https/?c=13559 when this crash happened.   Is there something in that recipe which is not compatible with the current python modules?  

Keith
History
Date User Action Args
2011-09-26 13:30:44kbriggssetmessages: + msg144537
2011-09-26 13:15:26orsenthilsetnosy: + orsenthil
messages: + msg144536
2011-09-22 11:24:35kbriggssetnosy: + kbriggs
messages: + msg144407
2009-10-19 18:00:17pitrousetstatus: open -> closed
resolution: accepted -> fixed
messages: + msg94247

stage: commit review -> committed/rejected
2009-10-19 17:36:15pitrousetresolution: accepted
messages: + msg94246
stage: patch review -> commit review
2009-10-19 17:12:18kbksetpriority: normal -> high

messages: + msg94245
2009-10-16 03:53:54kbksetpriority: normal
nosy: + kbk
messages: + msg94123

2009-10-16 01:33:45r.david.murraylinkissue7148 superseder
2009-10-14 22:55:01pitrousetfiles: + ssl_newbuf.patch
keywords: + patch
messages: + msg94048

stage: needs patch -> patch review
2009-10-14 22:41:11pitroucreate