2010-03-11 80 views
0

我正在使用python和M2Crypto與服務器進行安全的SSL連接。見下面的代碼。socket.setdefaulttimeout與M2Crypto連接進行交互

from M2Crypto import SSL, m2,x509 
from M2Crypto.m2xmlrpclib import Server, SSL_Tranport 
ctx = SSL.Context() 
m2.ssl_ctx_use_pkey_privkey(ctx.ctx,myKey.pkey) 
m2.ssl_ctx_use_x509(ctx.ctx,myCert.x509) 
server = Server(serverUrl, SSL_Transport(ctx)) 
server.ping() 

上述工作正常。如果我嘗試通過在代碼的開始處添加以下兩行來更改默認套接字超時,則會出現協議錯誤。

import socket 
socket.setdefaulttimeout(40) 

這是我收到的錯誤:

文件 「/usr/local/lib/python2.4/xmlrpclib.py」,線1096,在通話 迴歸自我.__發(個體經營.__ name,args) 文件「/usr/local/lib/python2.4/xmlrpclib.py」,第1383行,在__request中 verbose = self .__ verbose 文件「/usr/local/lib/python2.4/site -packages/M2Crypto/m2xmlrpclib.py「,第68行,請求 標題 xmlrpclib.ProtocolError:

爲什麼默認的套接字超時會導致問題?

回答

1

有一個補丁可以解決這個問題。它僅適用於Linux。參見錯誤2341 - >https://bugzilla.osafoundation.org/show_bug.cgi?id=2341

我還沒有試過這個補丁。我將使用不同的工作。我將套接字超時設置爲無,然後運行我的M2Crypto代碼,然後將套接字超時設置回我爲其餘代碼所需的值。

origTimeout = socket.getdefaulttimeout() 
socket.setdefaulttimeout(None) 
# run M2Crypto code 
socket.setdefaulttimeout(origTimeout) 
+0

你能告訴我們什麼問題是,什麼補丁(如https://gitlab.com/m2crypto/m2crypto/issues/new一個新的問題,請),所以我們可以認爲它對於目前的m2crypto,請問?謝謝。 – mcepl 2016-08-26 19:27:29