You can subscribe to this list here.
2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(6) |
Aug
(9) |
Sep
(2) |
Oct
(15) |
Nov
(1) |
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
(17) |
Feb
(2) |
Mar
(3) |
Apr
(2) |
May
(1) |
Jun
|
Jul
(9) |
Aug
(4) |
Sep
|
Oct
|
Nov
(4) |
Dec
(1) |
2004 |
Jan
|
Feb
(2) |
Mar
(7) |
Apr
(1) |
May
|
Jun
|
Jul
(4) |
Aug
(6) |
Sep
(13) |
Oct
(5) |
Nov
(1) |
Dec
(4) |
2005 |
Jan
(1) |
Feb
(7) |
Mar
(2) |
Apr
(2) |
May
|
Jun
(1) |
Jul
(7) |
Aug
(5) |
Sep
(3) |
Oct
(4) |
Nov
|
Dec
(1) |
2006 |
Jan
(1) |
Feb
|
Mar
(3) |
Apr
(1) |
May
|
Jun
(7) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(9) |
Dec
(2) |
2007 |
Jan
(4) |
Feb
|
Mar
(2) |
Apr
(1) |
May
(5) |
Jun
(6) |
Jul
|
Aug
(7) |
Sep
|
Oct
(1) |
Nov
(2) |
Dec
|
2008 |
Jan
(2) |
Feb
|
Mar
(10) |
Apr
(4) |
May
(3) |
Jun
(3) |
Jul
(5) |
Aug
(2) |
Sep
(30) |
Oct
(12) |
Nov
(5) |
Dec
(2) |
2009 |
Jan
(7) |
Feb
(1) |
Mar
(26) |
Apr
(20) |
May
(4) |
Jun
(1) |
Jul
(7) |
Aug
(21) |
Sep
(2) |
Oct
(9) |
Nov
(8) |
Dec
|
2010 |
Jan
(4) |
Feb
(5) |
Mar
(3) |
Apr
(1) |
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
(5) |
Nov
(3) |
Dec
|
2011 |
Jan
(1) |
Feb
|
Mar
|
Apr
(13) |
May
|
Jun
|
Jul
|
Aug
(3) |
Sep
(1) |
Oct
(6) |
Nov
(11) |
Dec
|
2012 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
(1) |
Aug
(13) |
Sep
(1) |
Oct
|
Nov
|
Dec
(3) |
From: Chris M. <cj...@av...> - 2003-07-06 09:48:50
|
Hi, I hope you can help, because I've exhausted my limited capabilites. I'm trying to build with mingw (as its free) on windows. OpenSSL 0.9.7b built flawlessly with mingw running the default ms\mingw32.bat script. It passes the included test scripts, so I presume it has done what it needs to. (You've probably guess I have extremely limited compiling/installing experience, which is 1 reason I chose Python). However I run into problems trying to build py-openssl. The default library build folder for openssl is out, the headers are in outinc. I copied libeay32.def and libeay32.dll into openssl-0.9.7b/out, but that didn't help. The platform is win-xp, with mingw 2.0.0.3. I know people have had it working previously, so I imagine it is me missing something obvious, but I am at the stage of going around in circles and would appreciate the help. Thanks, Chris Munchenberg cj...@av... C:\Python22\Lib\site-packages\pyOpenSSL-0.5.1>python setup.py build_ext --compiler=mingw32 -I C:\ope nssl-0.9.7b\outinc -L c:\openssl-0.9.7b\out running build_ext building 'OpenSSL.crypto' extension creating build\temp.win32-2.2 creating build\temp.win32-2.2\Release C:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -IC:\openssl-0.9.7b\outinc - IC:\Python22\include -c src/crypto/crypto.c -o build\temp.win32-2.2\Release\crypto.o src/crypto/crypto.c:20: warning: `CVSid' defined but not used C:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -IC:\openssl-0.9.7b\outinc - IC:\Python22\include -c src/crypto/x509.c -o build\temp.win32-2.2\Release\x509.o src/crypto/x509.c:15: warning: `CVSid' defined but not used C:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -IC:\openssl-0.9.7b\outinc - IC:\Python22\include -c src/crypto/x509name.c -o build\temp.win32-2.2\Release\x509name.o src/crypto/x509name.c:15: warning: `CVSid' defined but not used C:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -IC:\openssl-0.9.7b\outinc - IC:\Python22\include -c src/crypto/pkey.c -o build\temp.win32-2.2\Release\pkey.o src/crypto/pkey.c:14: warning: `CVSid' defined but not used C:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -IC:\openssl-0.9.7b\outinc - IC:\Python22\include -c src/crypto/x509store.c -o build\temp.win32-2.2\Release\x509store.o src/crypto/x509store.c:13: warning: `CVSid' defined but not used C:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -IC:\openssl-0.9.7b\outinc - IC:\Python22\include -c src/crypto/x509req.c -o build\temp.win32-2.2\Release\x509req.o src/crypto/x509req.c:13: warning: `CVSid' defined but not used C:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -IC:\openssl-0.9.7b\outinc - IC:\Python22\include -c src/crypto/x509ext.c -o build\temp.win32-2.2\Release\x509ext.o src/crypto/x509ext.c:14: warning: `CVSid' defined but not used C:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -IC:\openssl-0.9.7b\outinc - IC:\Python22\include -c src/crypto/pkcs7.c -o build\temp.win32-2.2\Release\pkcs7.o src/crypto/pkcs7.c:14: warning: `CVSid' defined but not used C:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -IC:\openssl-0.9.7b\outinc - IC:\Python22\include -c src/crypto/pkcs12.c -o build\temp.win32-2.2\Release\pkcs12.o src/crypto/pkcs12.c:17: warning: `CVSid' defined but not used C:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -IC:\openssl-0.9.7b\outinc - IC:\Python22\include -c src/util.c -o build\temp.win32-2.2\Release\util.o src/util.c:14: warning: `CVSid' defined but not used writing build\temp.win32-2.2\Release\crypto.def C:\MinGW\bin\dllwrap.exe -mno-cygwin -mdll -static --entry _DllMain@12 --output-lib build\temp.win32 -2.2\Release\libcrypto.a --def build\temp.win32-2.2\Release\crypto.def -s build\temp.win32-2.2\Relea se\crypto.o build\temp.win32-2.2\Release\x509.o build\temp.win32-2.2\Release\x509name.o build\temp.w in32-2.2\Release\pkey.o build\temp.win32-2.2\Release\x509store.o build\temp.win32-2.2\Release\x509re q.o build\temp.win32-2.2\Release\x509ext.o build\temp.win32-2.2\Release\pkcs7.o build\temp.win32-2.2 \Release\pkcs12.o build\temp.win32-2.2\Release\util.o -Lc:\openssl-0.9.7b\out -LC:\Python22\li bs -ll ibeay32 -lssleay32 -lWs2_32 -lpython22 -o build\lib.win32-2.2\OpenSSL\crypto.pyd C:\MinGW\bin\..\lib\gcc-lib\mingw32\3.2\..\..\..\..\mingw32\bin\ld.exe: cannot find -llibeay32 dllwrap: gcc exited with status 1 error: command 'dllwrap' failed with exit status 1 |
From: - 2003-05-07 05:42:04
|
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=big5"> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <title>¥un§A¬OÓ¤W¯Z±Ú</title> </head> <body> <br> <XMETA content="zh-tw" http-equiv="Content-Language"> <XMETA content="Microsoft FrontPage 5.0" name="GENERATOR"> <XMETA content="FrontPage.Editor.Document" name="ProgId"> <XBODY> <p><b>¥un§A¬OÓ<font color="#ff00ff" size="6">¤W¯Z±Ú</font>:</b></p> <p><b> <font color="#0000ff">(¤u§@8hrs/¤@¤Ñ)*(365¤Ñ)*(30¦~)=<span style="BACKGROUND-COLOR: #ffff00">(<font size="6">87600hrs</font>/¤@½ú¤l)</span></font></b></p> <p align="left"><b> ¦pªG¨C¤p®ÉÁ~¸ê¥u¦³100¤¸ªº¸Ü <font color="#008000">100¤¸*87600hrs=8,760,000¤¸/¤@¥Í</font></b></p> <p><b> ¥u¦³<font color="#ff0000"><font size="6">200¤¸</font> </font> <font color="#ff0000">200¤¸*87600hrs=<span style="BACKGROUND-COLOR: #ffff00"><font size="6">17,520,000¤¸</font>/¤@¥Í</span></font></b></p> <p><b> ¤F¤£°_300¤¸ <font color="#008000">300¤¸*87600hrs=26,280,000¤¸/¤@¥Í</font></b></p> <p align="center"><b>¦Ó¤@¯ë<font face="·s²Ó©úÅé"><span style="BACKGROUND-COLOR: #ffff00"><i>¤¤°ª¶¥¯Å</i></span>¥DºÞ</font>Á~¸ê´N¥H50000¤ëÁ~¨Óºâ¨C¤p®É¤]¤£¹L¤~<span style="BACKGROUND-COLOR: #ffff00"><font size="5">284¤¸</font></span></b></p> <p align="center"><b><font color="#808000" size="5">¥un§A¬ÝªºÀ´,§A·|µo²{¦Û¤vªº¤@½ú¤l¤w¸g³Q§Úºâ¥X¨Ó¤F</font></b></p> <p align="center"><font color="#800000" size="5"><b>§Aµ´¹ï¤£¥i¯à¶W¹L³o¨Ç¼Æ¦r!</b></font></p> <p><b> ¦pªG·Q§ïÅÜ! ´N¤@©wn¾Ç·|¦¨¥\ªÌ</b><font face="¼Ð·¢Åé" color="#000080" size="7"><span style="FONT-WEIGHT: 700; BACKGROUND-COLOR: #00ff00"><a href="http://www.eagle-fly.idv.tw/vampire.php" target="_blank">P´Iªº¯µ±K</a></span></font></p> <form action="http://f2m.aac.com.tw/f2m.php?F=1045793611 " method="post" target="_blank"> <p> <input type="hidden" value="mailto%3aglad5223%40ms21%2ehinet%2enet%3fsubject%3d%a5%d3%bd%d0%a5%5b%a4J%ba%f4%b8%f4%b6W%b0%d3%a8%c6%b7%7e" name="hm___action"> <table height="1" cellSpacing="1" width="687" border="1" target="_blank"> <tbody> <tr> <td borderColorLight="#808080" align="right" width="484" height="20" target="_blank"> <p align="right" target="_blank"><b><font face="·s²Ó©úÅé" color="#cc66ff" target="_blank">¤¤¤å©m¦W</font></b></p> </td> <td borderColorLight="#808080" align="right" width="733" height="20" target="_blank"> <p align="left" target="_blank"><font face="·s²Ó©úÅé" target="_blank"><font color="#ffff00" target="_blank"><input size="14" name="¤¤¤å©m¦W" target="_blank"></font><font color="#ff0000" target="_blank">(½Ð¶ñ¤¤¤å¥þ¦W)</font></font></p> </td> </tr> <tr> <td borderColorLight="#808080" align="right" width="484" height="1" target="_blank"><b><font face="·s²Ó©úÅé" color="#cc66ff" target="_blank">©Ê§O</font></b></td> <td borderColorLight="#808080" align="right" width="733" height="1" target="_blank"> <p align="left" target="_blank"><font face="·s²Ó©úÅé" color="#ffff00" target="_blank"><select size="1" name="©Ê§O" target="_blank"> <option selected target="_blank">½Ð¿ï¾Ü</option> <option>¨k</option> <option>¤k</option> </select> </font></p> </td> </tr> <tr> <td borderColorLight="#808080" align="right" width="484" height="1" target="_blank"> <p align="right" target="_blank"><b><font face="·s²Ó©úÅé" color="#cc66ff" target="_blank">¦~ÄÖ</font></b></p> </td> <td borderColorLight="#808080" align="right" width="733" height="1" target="_blank"> <p align="left" target="_blank"><font face="·s²Ó©úÅé" target="_blank"><font color="#ffff00" target="_blank"><input size="4" name="¦~ÄÖ" target="_blank"></font><b><font color="#cc66ff" size="2" target="_blank">·³(18·³¥H¤W) </font></b></font></p> </td> </tr> <tr> <td borderColorLight="#808080" align="right" width="484" height="1" target="_blank"> <p align="right" target="_blank"><b><font face="·s²Ó©úÅé" color="#cc66ff" target="_blank">¬P®y</font></b></p> </td> <td borderColorLight="#808080" align="right" width="733" height="1" target="_blank"> <p align="left" target="_blank"><font face="·s²Ó©úÅé" color="#ffff00" target="_blank"><select size="1" name="¬P®y" target="_blank"> <option selected target="_blank">½Ð¿ï¾Ü</option> <option>¨d¦Ï®y</option> <option>ª÷¤û®y</option> <option>Âù¤l®y</option> <option>¥¨ÃÉ®y</option> <option>·à¤l®y</option> <option>³B¤k®y</option> <option>¤Ñ¬i®y</option> <option>¤ÑÃÈ®y</option> <option>®g¤â®y</option> <option>¼¯½~®y</option> <option>¤ô²~®y</option> <option>Âù³½®y</option> </select></font></p> </td> </tr> <tr> <td borderColorLight="#808080" align="right" width="484" height="1" target="_blank"> <p align="right" target="_blank"><b><font face="·s²Ó©úÅé" color="#cc66ff" target="_blank">±B«Ãª¬ªp</font></b></p> </td> <td borderColorLight="#808080" align="right" width="733" height="1" target="_blank"> <p align="left" target="_blank"><font face="·s²Ó©úÅé" color="#ffff00" target="_blank"><select size="1" name="±B«Ãª¬ªp" target="_blank"> <option selected target="_blank">½Ð¿ï¾Ü</option> <option>¥¼±B</option> <option>¤w±B</option> </select> </font></p> </td> </tr> <tr> <td borderColorLight="#808080" align="right" width="484" height="1" target="_blank"> <p align="right" target="_blank"><b><font face="·s²Ó©úÅé" color="#cc66ff" target="_blank">¾·~</font></b></p> </td> <td borderColorLight="#808080" align="right" width="733" height="1" target="_blank"> <p align="left" target="_blank"><font face="·s²Ó©úÅé" target="_blank"><font color="#ffff00" target="_blank"><select size="1" name="¾·~" target="_blank"> <option selected target="_blank">½Ð¿ï¾Ü</option> <option>¤º¶Ô¤W¯Z±Ú</option> <option>·~°È¦æ¾P</option> <option>SOHO±Ú</option> <option>¦Û¤v·í¦ÑªO</option> <option>¾·~°ü¤k</option> <option>®a®x¥D°ü</option> <option>«Ý·~¤¤</option> <option>¾Ç¥Í</option> <option>¨ä¥L</option> </select> </font><b><font color="#cc66ff" target="_blank">¨ä¥¦</font></b><font color="#ffff00" target="_blank"> <input size="14" name="¾·~¨ä¥¦" target="_blank"></font></font></p> </td> </tr> <tr> <td borderColorLight="#808080" align="right" width="484" height="1" target="_blank"> <p align="right" target="_blank"><b><font face="·s²Ó©úÅé" color="#cc66ff" target="_blank">Ápµ¸¹q¸Ü : ¥Õ¤Ñ</font></b></p> <p align="right" target="_blank"><b><font face="·s²Ó©úÅé" color="#cc66ff" target="_blank">¦í®a</font></b></p> </td> <td borderColorLight="#808080" align="right" width="733" height="1" target="_blank"> <p style="LINE-HEIGHT: 150%; xmargin-BOTTOM: 3px; xmargin-TOP: 3px" align="left" target="_blank"><font face="·s²Ó©úÅé" target="_blank"><font color="#ffff00" target="_blank"><input size="14" name="Ápµ¸¹q¸Ü-¥Õ¤Ñ" target="_blank"></font><font color="#ff0000" target="_blank">(½Ð¯d¤jô¤j) </font></font> <p style="LINE-HEIGHT: 150%; xmargin-BOTTOM: 3px; xmargin-TOP: 3px" align="left" target="_blank"><font face="·s²Ó©úÅé" color="#ffff00" target="_blank"><input size="14" name="Ápµ¸¹q¸Ü-¦í®a" target="_blank"></font></p> </td> </tr> <tr> <td borderColorLight="#808080" align="right" width="484" height="1" target="_blank"> <p align="right" target="_blank"><b><font face="·s²Ó©úÅé" color="#cc66ff" target="_blank">ݾ°Ê¾÷</font></b></p> </td> <td borderColorLight="#808080" align="right" width="733" height="1" target="_blank"> <p align="left" target="_blank"><font face="·s²Ó©úÅé" color="#ffff00" target="_blank"><select size="1" name="Ý®t°Ê¾÷" target="_blank"> <option selected target="_blank">½Ð¿ï¾Ü</option> <option>¿ú¤£°÷¥Î</option> <option>¼W¥[²Ä¤G¥÷¦¬¤J</option> <option>³Ð·~·í¦ÑªO</option> <option>´N¬O·QÁÈ¿ú</option> </select></font></p> </td> </tr> <tr> <td borderColorLight="#808080" align="right" width="484" height="1" target="_blank"> <p align="right" target="_blank"><b><font face="·s²Ó©úÅé" color="#cc66ff" target="_blank">³Ì¤è«KÁpµ¸®É¶¡</font></b></p> </td> <td borderColorLight="#808080" align="right" width="733" height="1" target="_blank"> <p align="left" target="_blank"><font face="·s²Ó©úÅé" color="#ffff00" target="_blank"><select size="1" name="³Ì¤è«KÁpµ¸®É¶¡-¬P´Á" target="_blank"> <option>½Ð¿ï¾Ü</option> <option>¬P´Á¤@</option> <option>¬P´Á¤G</option> <option>¬P´Á¤T</option> <option>¬P´Á¥|</option> <option>¬P´Á¤</option> <option>¬P´Á¤»</option> <option>¬P´Á¤é</option> <option selected target="_blank">³£¥i¥H</option> </select><select size="1" name="D1" target="_blank"> <option selected target="_blank">½Ð¿ï¾Ü</option> <option>¤W¤È9-12</option> <option>¤¤¤È12-1</option> <option>¤U¤È1-5</option> <option>±ß¤W8-10</option> <option>±ß¤W9-11</option> <option>³£¥i¥H</option> </select> </font></p> </td> </tr> <tr> <td borderColorLight="#808080" align="right" width="484" height="1" target="_blank"> <p align="right" target="_blank"><b><font face="·s²Ó©úÅé" color="#cc66ff" target="_blank">³Ì¤è«K±½Í®É¶¡</font></b></p> </td> <td borderColorLight="#808080" align="right" width="733" height="1" target="_blank"> <p align="left" target="_blank"><font face="·s²Ó©úÅé" target="_blank"><font color="#ffff00" target="_blank"><select size="1" name="³Ì¤è«K±½Í®É¶¡" target="_blank"> <option>½Ð¿ï¾Ü</option> <option>¬P´Á¤@</option> <option>¬P´Á¤G</option> <option>¬P´Á¤T</option> <option>¬P´Á¥|</option> <option selected target="_blank">¬P´Á¤</option> <option>³£¥i¥H</option> <option>°²¤é</option> </select></font><b><font color="#cc66ff" size="2" target="_blank"><select size="1" name="³Ì¤è«KÁpµ¸®É¶¡-®É¬q" target="_blank"> <option selected target="_blank">½Ð¿ï¾Ü</option> <option>¤W¤È9-12</option> <option>¤¤¤È12-1</option> <option>¤U¤È1-5</option> <option>±ß¤W8-10</option> <option>±ß¤W9-11</option> <option>³£¥i¥H</option> </select> </font></b></font></p> </td> </tr> <tr> <td borderColorLight="#808080" align="right" width="484" height="24" target="_blank"> <p align="right" target="_blank"><b><font face="·s²Ó©úÅé" color="#cc66ff" target="_blank">¦a§}</font></b></p> </td> <td borderColorLight="#808080" align="right" width="733" height="24" target="_blank"> <p align="left" target="_blank"><font face="·s²Ó©úÅé" target="_blank"><font color="#ffff00" target="_blank"><input size="40" name="¦a§}" target="_blank"></font><font color="#ff0000" target="_blank">(¥²¶ñÄæ¦ì)</font></font></p> </td> </tr> <tr> <td borderColorLight="#808080" align="right" width="484" height="17" target="_blank"> <p align="right" target="_blank"><b><font face="·s²Ó©úÅé" color="#cc66ff" target="_blank">¹q¤l¶l¥ó</font></b></p> </td> <td borderColorLight="#808080" align="right" width="733" height="17" target="_blank"> <p align="left" target="_blank"><font face="·s²Ó©úÅé" color="#ffff00" target="_blank"><input size="40" name="¹q¤l¶l¥ó" target="_blank"></font></p> </td> </tr> <tr> <td borderColorLight="#808080" align="right" width="484" height="43" target="_blank"><b><font face="·s²Ó©úÅé" color="#cc66ff" target="_blank">«ØÄ³¨Æ¶µ</font></b></td> <td borderColorLight="#808080" align="right" width="733" height="43" target="_blank"> <p align="left" target="_blank"><font face="·s²Ó©úÅé" color="#ffff00" target="_blank"><input size="40" name="«ØÄ³¨Æ¶µ" target="_blank"></font></p> </td> </tr> </tbody> </table> <p><font face="·s²Ó©úÅé" size="2" target="_blank">±z¹ï©ó<font color="#ff0000" target="_blank">³sÂê¶W°Ó¨Æ·~</font><font color="#000000" target="_blank">ªº³Ð·~·NÄ@</font>¡@<input type="checkbox" value="«Ü¦³¿³½ì±q¨Æ¿Ë©ô" name="§Ú1" target="_blank"><font color="#0000ff" target="_blank">§Ú«Ü¦³¿³½ì ¡]Àu¥ý¡^</font>¡@<input type="checkbox" value="µy·LÁA¸Ñ¿Ë©ô" name="§Ú2" target="_blank"><font color="#0000ff" target="_blank">§Úµy·LÁA¸Ñ </font>¡@<input type="checkbox" value="§¹¥þ¤£ÁA¸Ñ¿Ë©ô" name="§Ú" target="_blank"><font color="#0000ff" target="_blank">§Ú§¹¥þ¤£ÁA¸Ñ</font></font></p> <p><font face="·s²Ó©úÅé" size="2" target="_blank">±zn¿ï¾Ü¦óºØ¤è¦¡¶i¦æ<font color="#ff0000" target="_blank">³sÂê¶W°Ó¨Æ·~</font>¡@ <input type="checkbox" value="¶Ç²Î¤H¯ß" name="¿ï¾Ü¹B§@¤è¦¡ ?1" target="_blank"><font color="#0000ff" target="_blank">¶Ç²Î¤è¦¡</font>¡@¡@<input type="checkbox" value="ºô¸ô·s¤H¯ß" name="¿ï¾Ü¹B§@¤è¦¡ ?" target="_blank"><font color="#0000ff" target="_blank">ºô¸ô¤è¦¡</font></font></p> <p><font face="·s²Ó©úÅé" size="2" target="_blank">±z¨C¤Ñ¦³¢°¡ã¢±¤p®É¤Wºô®É¶¡¥i¥H¹B§@<font color="#ff0000" target="_blank">³sÂê¶W°Ó¨Æ·~</font>¡@<input type="checkbox" value="§Ú¦³" name="¦³®É¶¡¹B§@ºô¸ô¿Ë©ô ?1" target="_blank"><font color="#0000ff" target="_blank">§Ú¦³</font>¡@¡@<input type="checkbox" value="§Ú¨S¦³" name="¦³®É¶¡¹B§@ºô¸ô¿Ë©ô ?" target="_blank"><font color="#0000ff" target="_blank">§Ú¨S¦³</font></font></p> <p><font face="·s²Ó©úÅé" size="2" target="_blank">±z¬O§_Ä@·N§K¶O±µ¨ü<font color="#ff0000" target="_blank">ºô¸ô¦æ¾P°ª¤â¯S°V</font>¡@<input type="checkbox" CHECKED value="§ÚÄ@·N" name="±µ¨üºô¸ô¯S°V? " target="_blank"><font color="#0000ff" target="_blank">§ÚÄ@·N</font>¡@¡@<input type="checkbox" value="§Ú¤£Ä@·N" name="±µ¨üºô¸ô¯S°V ?" target="_blank"><font color="#0000ff" target="_blank">§Ú¤£Ä@·N</font></font></p> <p><font face="·s²Ó©úÅé" size="2" target="_blank"><input type="submit" value="°e¥X" name="°e¥X" target="_blank"> <input type="reset" value="«·s³]©w" name="B2" target="_blank"></font></p> </form> </body> </html> |
From: Dave A. <da...@im...> - 2003-04-08 17:33:59
|
Were there any bugs fixed in 0.5.1 relating to timeouts? I'm having no problems on my Linux 0.5.1 box, but my Windows 0.5 box is failing to actually timeout (until 300 seconds or so, I'll bet). I have used set_timeout() on the ctx. -dave On Fri, 15 Nov 2002 09:37:49 -0800 Kevin Lindsay <kli...@mk...> wrote: > Hello, I've been using pyopenssl with python's BaseHTTPServer and have > stumbled on to racy bug. > > The server sometimes blocks indefinetly during the SSL handshake > during a read(). It appears todo this when there are reverse dns > issues with the client ip or dns server. Maybe if the dns server is > slow to respond... Basically everything is well and speedy when I > added my client's IP to /etc/hosts on the server. (linux 2.4.19, > debian woody). > > After alot of debugging it seems the following is happening (I'm not > very familiar with SSL or pyOpenSSL internals) so here is the high > level list of events: > > 1) Browser Connects to server > 2) Server does handshake > 3) Server blocks on read() > 4) Browser waits for response from server indefinetly > > This only happens with Mozilla based browsers, IE and Opera timeout > after 5 seconds and will resend the connection request, Mozilla > doesn't so will spin forever. > > It is a bit racy and only occurs when the server is serving 10 or so > images at once and I hit reload multiple times. > > I've tested it without threads and the problem still exists. Its the > only issue I can see with pyOpenSSL, other than that its been > excellent. > > If anyone has any ideas or would like more info on debugging this > thing let me know. > > Kevin- > > --------------------------------------------------- > Kevin Lindsay > Debian Developer > Fingerprint: 81E 58A3 B49A 580E EE3D 8CF0 519A 55F0 746C 51F4 > Key Id: 746C51F4 > > > ------------------------------------------------------- > This sf.net email is sponsored by: To learn the basics of securing > your web site with SSL, click here to get a FREE TRIAL of a Thawte > Server Certificate: http://www.gothawte.com/rd524.html > _______________________________________________ > pyopenssl-list mailing list > pyo...@li... > https://lists.sourceforge.net/lists/listinfo/pyopenssl-list > |
From: <mar...@mi...> - 2003-04-03 10:30:59
|
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=iso-8859-1"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <META http-equiv=Content-Type content="text/html; charset=iso-8859-1"> <META content="MSHTML 6.00.2800.1141" name=GENERATOR> <STYLE></STYLE> </HEAD> <BODY bgColor=#ffffff><FONT face=Arial size=2> <DIV> <P align=center><B><FONT color=red size=6><B>Refinance Today!</FONT></B><BR><FONT color=blue size=4> <P align=center><FONT color=black>10</FONT> or<FONT color=black> 15</FONT> year Fixed Conforming<FONT color=black> 4.630%</FONT><BR><FONT color=black>20</FONT> or <FONT color=black>30</FONT> year Fixed Conforming <FONT color=black>5.250%</FONT><BR><FONT color=black>15</FONT> Yr Fixed Jumbo <FONT color=black>4.750%</FONT><BR><FONT color=black>30</FONT> Yr Fixed Jumbo<FONT color=black> 5.630%</FONT><BR> <P align=center><FONT color=green><B>Conforming Loans are up to<FONT color=black> $322,700</FONT><BR>Jumbo Loans are<FONT color=black> $322,701</FONT> and higher<BR><FONT color=red> <P align=center>Rates based on Approved Credit</B> <P align=center><A href="http://www.hilltopfinancial.com/wholesale/fraWelcome.asp?CompanyID=5890&AccessCode=guest&page=main&LoanID=" target=_top><IMG alt=hilltop src="http://direct_lender.tripod.com/HillTopLogo.gif" border=0></A></IFRAME><BR> <P align=center><FONT color=blue size=5>Call Today! 650-287-4266 x288<br>Ask for Andrew <P align=center><FONT color=blue size=5>or e-mail me at: <A href="mailto:dir...@mi...">dir...@mi...</A>. </FONT></TD></TR> <P> <FORM action="mailto:an...@or...?subject=Call me tell me more" method=post> <P align=center><FONT color=red size=5><B>Name and Phone: <INPUT size=30 name=name><BR> <P align=center><INPUT type=submit value="Submit Query"> <INPUT type=reset value=Reset> </FORM></P></B></FONT></FONT></FONT></FONT></B><BR></DIV></FONT></BODY></HTML> |
From: Mihai I. <mi...@re...> - 2003-03-31 21:14:48
|
On 31 Mar 2003, Martin Sj=F6gren wrote: > Hello list. >=20 > I'm having some problems compiling my own recent code with Python 1.5. > For example the code for cyclic garbage collection, and some Unicode > code. >=20 > Are there anyone out there still using Python 1.5 that would be really > pissed off if I dropped Python 1.5 support? I am actually planning on using it, unfortunately we still have a product= =20 based on 1.5.2. If I am the only one to still use 1.5.2, I could probably try to maintain= =20 whatever we have right now (and is working), kind of as a branch. Misa |
From: Martin <md...@md...> - 2003-03-31 18:57:35
|
Hello list. I'm having some problems compiling my own recent code with Python 1.5. For example the code for cyclic garbage collection, and some Unicode code. Are there anyone out there still using Python 1.5 that would be really pissed off if I dropped Python 1.5 support? Cheers, Martin --=20 Martin Sj=F6gren sj...@de... -- ma...@du... GPG key: http://www.mdstud.chalmers.se/~md9ms/gpg.html let hello =3D "hello" : hello in putStr (unlines hello) |
From: Zoltan F. <zol...@us...> - 2003-03-10 14:29:53
|
hello, first of all i'm not sure if the problem is with pyOpenSSL, but i still get the error in my app sometimes. the application is a client/server one, where the channels between the server and clients are secured with SSL. i've created a test suite which connects and disconnects a client to a server several times. after a few hundred connections, i get the error at the server side, and one of the server threads dies, and no other clients are serviced afterwards. my question is the following: is there any way/methodology of tracing this situation? the server uses threads extensively, and all i could think about is to find out which thread dies, when i get this error, but i have no idea on how to track this problem down. (i use the CVS version of pyOpenSSL, and the tsafe version of the Connection module). thanks, zoltan |
From: Toni A. <to...@so...> - 2003-02-11 03:53:13
|
Hi, i'd like to access the OpenSSL PRNG, but neither RAND_bytes() nor RAND_pseudo_bytes() have been implemented in OpenSSL.rand, so here is a patch which adds them. Index: src/rand/rand.c =================================================================== RCS file: /u/cvs/pyopenssl/pyOpenSSL/src/rand/rand.c,v retrieving revision 1.10 diff -u -U1 -r1.10 rand.c --- src/rand/rand.c 8 Jul 2002 11:06:01 -0000 1.10 +++ src/rand/rand.c 11 Feb 2003 03:12:11 -0000 @@ -11,2 +11,14 @@ #include <Python.h> +#include "../util.h" + +PyObject *rand_Error; + +#ifdef exception_from_error_queue +# undef exception_from_error_queue +#endif +#define exception_from_error_queue() do { \ + PyObject *errlist = error_queue_to_list(); \ + PyErr_SetObject(rand_Error, errlist); \ + Py_DECREF(errlist); \ +} while (0) @@ -79,2 +91,88 @@ +/* + RAND_bytes() is available in all versions of SSLeay and + OpenSSL. It has a return value since OpenSSL 0.9.5. + RAND_pseudo_bytes() was added in OpenSSL 0.9.5. +*/ +static char rand_bytes_doc[] = "\n\ +Produce cryptographically strong pseudo-random bytes.\n\ +An error occurs if the PRNG has not been seeded with enough\n\ +randomness to ensure an unpredictable byte sequence.\n\ +\n\ +Arguments: spam - Always NULL\n\ + args - The Python argument tuple, should be:\n\ + num - How many bytes to produce\n\ +Returns: A string of pseudo-random bytes. Throws a rand.Error\n\ + exception if there wasn't enough randomness\n\ +"; + +static PyObject * +rand_bytes(PyObject *spam, PyObject *args) +{ + int num, rc; + PyObject *rv; + unsigned char *buf; + + if (!PyArg_ParseTuple(args, "i:bytes", &num)) + return NULL; + + buf = (unsigned char *) PyMem_NEW(unsigned char *, num); + if (!buf) { + PyErr_NoMemory(); + return NULL; + } + + rc = RAND_bytes(buf, num); + if (rc != 1) { + exception_from_error_queue(); + return NULL; + } + rv = Py_BuildValue("s#", buf, num); + PyMem_DEL(buf); + return rv; +} + +static char rand_pseudo_bytes_doc[] = "\n\ +Produce pseudo-random bytes.\n\ +Pseudo-random byte sequences generated by pseudo_bytes()\n\ +will be unique if they are of sufficient length, but are not\n\ +necessarily unpredictable. They can be used for non-cryptographic\n\ +purposes and for certain purposes in cryptographic protocols, but\n\ +usually not for key generation etc.\n\ +\n\ +Arguments: spam - Always NULL\n\ + args - The Python argument tuple, should be:\n\ + num - How many bytes to produce\n\ +Returns: A string of pseudo-random bytes\n\ +"; + +static PyObject * +rand_pseudo_bytes(PyObject *spam, PyObject *args) +{ + int num, rc; + PyObject *rv; + unsigned char *buf; + + if (!PyArg_ParseTuple(args, "i:pseudo_bytes", &num)) + return NULL; + + buf = (unsigned char *) PyMem_NEW(unsigned char *, num); + if (!buf) { + PyErr_NoMemory(); + return NULL; + } + + rc = RAND_pseudo_bytes(buf, num); + /* + RAND_pseudo_bytes() returns 1 if the bytes generated are + cryptographically strong, 0 otherwise. + + Maybe this should return a list in order to pass the + RAND_pseudo_bytes() return value. + */ + rv = Py_BuildValue("s#", buf, num); + PyMem_DEL(buf); + return rv; +} + static char rand_status_doc[] = "\n\ @@ -211,2 +309,4 @@ { "seed", (PyCFunction)rand_seed, METH_VARARGS, rand_seed_doc }, + { "bytes", (PyCFunction)rand_bytes, METH_VARARGS, rand_bytes_doc }, + { "pseudo_bytes", (PyCFunction)rand_pseudo_bytes, METH_VARARGS, rand_pseudo_bytes_doc }, { "status", (PyCFunction)rand_status, METH_VARARGS, rand_status_doc }, @@ -238,2 +338,11 @@ return; + + rand_Error = PyErr_NewException("rand.Error", NULL, NULL); + if (rand_Error == NULL) + goto error; + if (PyModule_AddObject(module, "Error", rand_Error) != 0) + goto error; + +error: + ; } -- Toni Andjelkovic <to...@so...> |
From: Remy C. C. <dev...@sm...> - 2003-02-09 15:56:15
|
Hi, I've 'created' a BaseHTTPSServer module based on BaseHTTPServer (duh) that uses pyOpenSSL to create SSL connections. This is my first try with/at (pyOpen)SSL and I'm not sure the module I made is flawless :) I've tested a simple server with Konqueror which reported that it was connected to a secure server using TLSv1/SSLv3. So it seems to be working right, but what I would like to know is: is it? So if anyone experienced would like to comment on the code, please do. Regards, Remy Cool |
From: Martin <md...@md...> - 2003-01-15 17:19:58
|
ons 2003-01-15 klockan 14.24 skrev Dave Aitel: > Have you tried timoutsocket.py? I quite like it and it works on Windows. Won't work. pyopenssl takes a shortcut and calls SSL_read and SSL_write directly instead of using the socket object's recv/send. Otherwise, I'd have to create my own BIO that packs and unpacks python strings a few zillion times... /Martin |
From: Zoltan F. <zol...@us...> - 2003-01-15 16:26:50
|
Martin Sjögren wrote: > > Er. I don't think I understand you. Are there still versions of your > program that leak, even with the CVS version of pyopenssl? I wouldn't be > surprised, as I'm definitely not sure if I manage to free all the memory > allocated by openssl (the non-existant documentation is very vague on > reference counting and allocation). > > Please explain, ideally with a minimal program that still leaks. ;) > i'll try :) the server that still leaks is something like this: class server: def getmessage(self, timeout=None): rfds = self.client_co_list[:] rfds.insert(0, self.self_co) rs, ws, es = select.select(rfds, [], [], timeout) if rs == []: return 'no message' if rs.count(self.self_co): client_co, client_addr = self.self_co.accept() self.client_co_list.insert(0, client_co) return 'new connection' client_co = rs[0] client_id = client_co.fileno() raw_data = recvdata(client_co) if len(raw_data) == 0: self.client_co_list.remove(client_co) client_co.shutdown() client_co.close() return 'disconnect' return raw_data def serveclients(self): while True: message = self.getmessage() print message self.self_co of course is the Connection object the server listens on. now if the clients of this server are connecting/disconnecting fast enough, the disconnecting clients will not be deleted from the client_co_list until there are no new clients connecting, as if there are, they will be served before anything else, because the first object of the rfds is the server's Connection object, and one getmessage call will serve only the first object the select call returns. in this case (if the clients are connecting/disconnecting fast enough) this code still leaks if the connection objects are SSL objects, using simple sockets there is no leak at all. oh, and i just realising that i did not test the minimal server of the examples of the CVS version (or at least i can not recall its result). but the 0.5.1 version's example server does leak if the shutdown method is'nt commented out, and the clients are connecting/disconnecting fast enough. zoltan |
From: Dave A. <da...@im...> - 2003-01-15 13:33:55
|
Have you tried timoutsocket.py? I quite like it and it works on Windows. -dave On Wed, 15 Jan 2003 13:31:59 +0000 "mjabbur" <mj...@te...> wrote: > My major problem is the timeout. If the server does not have SSL it > will block forever. I've thought to use the alarm function but this > script will also run on Windows which does not have support for alarm. > Anyway I'll try the OpenSSL list. > > Thanks, > Marlon > > ---------- Cabeçalho inicial ----------- > > De: pyo...@li... > Para: pyo...@li... > Cópia: > Data: 15 Jan 2003 11:27:27 +0100 > Assunto: Re: [pyOpenSSL] How to detect if a port has SSL running? > > > tis 2003-01-14 klockan 14.14 skrev Marlon Jabbur: > > > Hi list, > > > I've been using pyOpenSSL for a while and I have a problem that I > could > > > not solve and maybe someone can help me. > > > My problem is how do I detect if a arbitrary port is running or > not SSL? > > > When I establish a connection with a non-ssl server and I try to > > > send some data it hangs forever, I'm guessing that the problem is > > > that > the > > > SSL handshake never completes, but how can I catch this error in a > > > script? > > > > I think it depends on the SSL version, and I think it is better to > > ask this question on the openssl-users mailing list. > > > > I'm not sure you would *want* to be able to detect it (other than > > timing out) since it invites solutions on the form "Try SSL and if > > that fails, revert to non-encrypted communication" which in turn > > invites downgrade attacks from a malicious party. I think. :) > > > > > > /Martin > > > > > > > > ------------------------------------------------------- > This SF.NET email is sponsored by: Take your first step towards giving > > your online business a competitive advantage. Test-drive a Thawte SSL > certificate - our easy online guide will show you how. Click here to > get started: http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0027en > _______________________________________________ > pyopenssl-list mailing list > pyo...@li... > https://lists.sourceforge.net/lists/listinfo/pyopenssl-list > |
From: <mj...@te...> - 2003-01-15 13:32:04
|
My major problem is the timeout. If the server does not have SSL it=0D=0A= will block forever. I've thought to use the alarm function but this=0D=0A= script will also run on Windows which does not have support for alarm.=0D= =0AAnyway I'll try the OpenSSL list.=0D=0A=0D=0AThanks,=0D=0AMarlon=0D=0A= =0D=0A---------- Cabe=E7alho inicial -----------=0D=0A=0D=0ADe: pyopenss= l-l...@li...=0D=0APara: pyo...@li...urce= forge.net=0D=0AC=F3pia: =0D=0AData: 15 Jan 2003 11:27:27 +0100=0D=0AAssun= to: Re: [pyOpenSSL] How to detect if a port has SSL running?=0D=0A=0D=0A>= tis 2003-01-14 klockan 14.14 skrev Marlon Jabbur:=0D=0A> > Hi list,=0D=0A= > > I've been using pyOpenSSL for a while and I have a problem that I=0D=0A= could =0D=0A> > not solve and maybe someone can help me. =0D=0A> > My pro= blem is how do I detect if a arbitrary port is running or=0D=0Anot SSL?=0D= =0A> > When I establish a connection with a non-ssl server and I try to s= end=0D=0A> > some data it hangs forever, I'm guessing that the problem i= s that=0D=0Athe =0D=0A> > SSL handshake never completes, but how can I ca= tch this error in a=0D=0A> > script?=0D=0A> =0D=0A> I think it depends on= the SSL version, and I think it is better to ask=0D=0A> this question on= the openssl-users mailing list.=0D=0A> =0D=0A> I'm not sure you would *w= ant* to be able to detect it (other than timing=0D=0A> out) since it invi= tes solutions on the form "Try SSL and if that fails,=0D=0A> revert to no= n-encrypted communication" which in turn invites downgrade=0D=0A> attacks= from a malicious party. I think. :)=0D=0A> =0D=0A> =0D=0A> /Martin=0D=0A= > =0D=0A> |
From: Martin <md...@md...> - 2003-01-15 10:27:52
|
tis 2003-01-14 klockan 14.14 skrev Marlon Jabbur: > Hi list, > I've been using pyOpenSSL for a while and I have a problem that I could=20 > not solve and maybe someone can help me.=20 > My problem is how do I detect if a arbitrary port is running or not SSL? > When I establish a connection with a non-ssl server and I try to send > some data it hangs forever, I'm guessing that the problem is that the=20 > SSL handshake never completes, but how can I catch this error in a > script? I think it depends on the SSL version, and I think it is better to ask this question on the openssl-users mailing list. I'm not sure you would *want* to be able to detect it (other than timing out) since it invites solutions on the form "Try SSL and if that fails, revert to non-encrypted communication" which in turn invites downgrade attacks from a malicious party. I think. :) /Martin |
From: Martin <md...@md...> - 2003-01-15 10:21:30
|
tis 2003-01-14 klockan 14.44 skrev Zoltan Felleg: > i,ve tested the CVS version, it works greatly for me (does not leak)=20 > even when the verify callback function is a class method. Great, so the cyclic stuff seems to be working! > just a bit of another thing: i've fixed my real server, which served the=20 > clients in a loop of select/recv pairs, where only the first client was=20 > served at any one time even if the select call returned more than one=20 > readable sockets. the first client was always the server's socket on=20 > which it accepted new connections, so basically a test, which was a=20 > thousand clients connecting and then disconnecting, took the following=20 > order: a thousand client was connected, and just after that, when no new=20 > clients were connecting, were the clients disconnected from the server=20 > side. (if it is unclear, please let me know, i'll try to express myself=20 > more clearly). i do know, that this method (ie. not recv-ing from all=20 > the sockets the select returned is a BAD THING), and i will not return=20 > to that method again, but the clear text version of the server (without=20 > openssl) had no leak even in that case, while the openssl version did=20 > have leakage. if this information is useless, please disregard it.=20 > thanks for the help so far, Er. I don't think I understand you. Are there still versions of your program that leak, even with the CVS version of pyopenssl? I wouldn't be surprised, as I'm definitely not sure if I manage to free all the memory allocated by openssl (the non-existant documentation is very vague on reference counting and allocation). Please explain, ideally with a minimal program that still leaks. ;) /Martin |
From: Zoltan F. <zol...@us...> - 2003-01-14 13:34:49
|
Martin Sjögren wrote: > I've just commited code that makes use of the cyclic GC API for e.g. > Connections and Contexts and I can no longer see any leaking while using > instance methods. Zoltan, can you run your tests with the CVS version? > > > /Martin hello, i,ve tested the CVS version, it works greatly for me (does not leak) even when the verify callback function is a class method. just a bit of another thing: i've fixed my real server, which served the clients in a loop of select/recv pairs, where only the first client was served at any one time even if the select call returned more than one readable sockets. the first client was always the server's socket on which it accepted new connections, so basically a test, which was a thousand clients connecting and then disconnecting, took the following order: a thousand client was connected, and just after that, when no new clients were connecting, were the clients disconnected from the server side. (if it is unclear, please let me know, i'll try to express myself more clearly). i do know, that this method (ie. not recv-ing from all the sockets the select returned is a BAD THING), and i will not return to that method again, but the clear text version of the server (without openssl) had no leak even in that case, while the openssl version did have leakage. if this information is useless, please disregard it. thanks for the help so far, zoltan |
From: Marlon J. <mj...@te...> - 2003-01-14 13:17:37
|
Hi list, I've been using pyOpenSSL for a while and I have a problem that I could not solve and maybe someone can help me. My problem is how do I detect if a arbitrary port is running or not SSL? When I establish a connection with a non-ssl server and I try to send some data it hangs forever, I'm guessing that the problem is that the SSL handshake never completes, but how can I catch this error in a script? Thanks, Marlon |
From: Zoltan F. <zol...@us...> - 2003-01-10 15:10:30
|
Martin Sjögren wrote: > I've just commited code that makes use of the cyclic GC API for e.g. > Connections and Contexts and I can no longer see any leaking while using > instance methods. Zoltan, can you run your tests with the CVS version? > > > /Martin sure, i will test it on the weekend. the client leakage has disappeared as soon as the verify callback was removed from the class, thanks. i have tested the simple server with 2000 clients, the memory footprint of it was 2724Kat the startup, after the last client has disconnected, it was 12100K +- 100K. when i modified it a bit, so after a ZeroReturnError the dropClient function was called with an error parameter, to skip the shutdown method, the leakage disappeared, but a few hundred TIME_WAIT lines showed up in the netstat command's output. so right now i'm completely satisfied, but if you find out something about this, please let me know :) i'll send you the results of testing the CVS version next week sometime (i won't have access to the net on monday and maybe tuesday). thanks for the help, zoltan |
From: Martin <md...@md...> - 2003-01-09 17:14:08
|
I've just commited code that makes use of the cyclic GC API for e.g. Connections and Contexts and I can no longer see any leaking while using instance methods. Zoltan, can you run your tests with the CVS version? /Martin |
From: Martin <md...@md...> - 2003-01-09 12:07:49
|
tor 2003-01-09 klockan 10.38 skrev Zoltan Felleg: > thanks, i'll give it a try not using class methods/attributes for the=20 > context/verifycb. (stupid me, the last thing i would think about were=20 > cyclic references). I just had an idea, and it worked out. A simple way to avoid the problem is to make verifycb a static method: def verifycb(conn, cert, errnum, depth, ok): return ok verifycb =3D staticmethod(verifycb) The static method has no reference to any instance objects and will therefore not create a cycle. /Martin |
From: Martin <md...@md...> - 2003-01-09 11:33:59
|
tor 2003-01-09 klockan 10.38 skrev Zoltan Felleg: > i'll also try to modify the simple server to avoid the leak. what=20 > hardware do you use for the test? maybe (i hope) you do not see the leak=20 > because the server do not serve as many clients within a few minutes to=20 > make it visible. i'll try it with a fixed number (a few thousands) of=20 > clients connecting, and send the results. Sounds good. I'm on an Athlon 1.4GHz with 384MB RAM. /Martin |
From: Zoltan F. <zol...@us...> - 2003-01-09 09:30:18
|
Martin Sjögren wrote: > > > I think I've figured out the problem. > > >>class client: >> def __init__(self): >> self.ctx = OpenSSL.SSL.Context(OpenSSL.SSL.TLSv1_METHOD) >> self.ctx.set_verify(OpenSSL.SSL.VERIFY_PEER, self.verifycb) > > > Using self.verifycb introduces a cyclic reference. > > >> self.ctx.use_privatekey_file(client_kf) >> self.ctx.use_certificate_file(client_cf) >> self.ctx.load_verify_locations(ca_cf) >> sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) >> self.co = OpenSSL.tsafe.Connection(self.ctx, sock) > > > The use of self.ctx here is also cyclic. thanks, i'll give it a try not using class methods/attributes for the context/verifycb. (stupid me, the last thing i would think about were cyclic references). > > >> def verifycb(self, conn, cert, errnum, depth, ok): >> return ok >> >> >>if __name__ == '__main__': >> time.sleep(5) >> for i in range(10000): >> print i >> clt = client() >> clt.co.close() >> del clt.ctx >> del clt.co >> time.sleep(10) >> i'll also try to modify the simple server to avoid the leak. what hardware do you use for the test? maybe (i hope) you do not see the leak because the server do not serve as many clients within a few minutes to make it visible. i'll try it with a fixed number (a few thousands) of clients connecting, and send the results. thanks, zoltan |
From: Martin <md...@md...> - 2003-01-08 18:42:23
|
ons 2003-01-08 klockan 12.24 skrev Zoltan Felleg: > this method for me results in constantly growing memory usage of the=20 > server (about 10-20MB per minute). and the id of the Connection object=20 > is constantly changing (growing), while the Context remains the same (as=20 > expected), so i'm assuming the Connection objects returned by the accept=20 > method do not get deleted. (i tied to explicitly delete both the=20 > connection object and its context, but the leak remained). Hmm, I guess I'll have to monitor it a bit longer. > the script i was using follows: I think I've figured out the problem. > class client: > def __init__(self): > self.ctx =3D OpenSSL.SSL.Context(OpenSSL.SSL.TLSv1_METHOD) > self.ctx.set_verify(OpenSSL.SSL.VERIFY_PEER, self.verifycb) Using self.verifycb introduces a cyclic reference. > self.ctx.use_privatekey_file(client_kf) > self.ctx.use_certificate_file(client_cf) > self.ctx.load_verify_locations(ca_cf) > sock =3D socket.socket(socket.AF_INET, socket.SOCK_STREAM) > self.co =3D OpenSSL.tsafe.Connection(self.ctx, sock) The use of self.ctx here is also cyclic. > def verifycb(self, conn, cert, errnum, depth, ok): > return ok >=20 >=20 > if __name__ =3D=3D '__main__': > time.sleep(5) > for i in range(10000): > print i > clt =3D client() > clt.co.close() > del clt.ctx > del clt.co > time.sleep(10) >=20 > when both the del clt.ctx and del clt.co lines are there, there is no=20 > leak at all. if both of them are commented out, the memory usage goes to=20 > about 100MB, and if only the context is deleted, the memory usage is=20 > about 80MB. Add a def __del__(self): print 'del' method and you'll see that when both the del:s in the loop are present, it'll print 'del', but if you comment any one of them they will disappear. Compare with a similar program. =3D=3D=3D class foo: def __init__(self, x): self.foo =3D x class bar: def __init__(self): self.bar =3D foo(self.m) def m(self): pass def __del__(self): print 'del' while 1: x =3D bar() #del x.bar =3D=3D=3D It has the exact same problem. /Martin |
From: Zoltan F. <zol...@us...> - 2003-01-08 11:16:43
|
Martin Sjögren wrote: > > Would you mind detailing the exact test script you used? With the > following script > === > from OpenSSL import SSL > import socket > > while 1: > ctx = SSL.Context(SSL.TLSv1_METHOD) > conn = SSL.Connection(ctx, socket.socket()) > === > running on Debian unstable, using OpenSSL 0.9.6g, pyOpenSSL 0.5.1 and > Python 2.2.2 I can't detect any leaking at all (monitoring it in top > while it's running) same results for me... > > Am I misunderstanding you? > > > I tried running > > python server.py 2000 >& /dev/null > > and > > while true; do echo foo | python client.py localhost 2000; done >& > /dev/null > > and the memory usage of the server did increase, but very very very > slowly, it took several *minutes* for it to reach 5% of my total memory > (256M), and then I sat watching it for several more minutes and it never > went over 6.1%. I don't know what to make of it. :) > this method for me results in constantly growing memory usage of the server (about 10-20MB per minute). and the id of the Connection object is constantly changing (growing), while the Context remains the same (as expected), so i'm assuming the Connection objects returned by the accept method do not get deleted. (i tied to explicitly delete both the connection object and its context, but the leak remained). > > /Martin the script i was using follows: #!/bin/env python import os import time import socket import OpenSSL.SSL import OpenSSL.tsafe keydir = '/data/devel/triton/source/key' ca_cf = os.path.normpath(os.path.join(keydir, 'ca.cert')) ca_kf = os.path.normpath(os.path.join(keydir, 'ca.key')) server_cf = os.path.normpath(os.path.join(keydir, 'svr.cert')) server_kf = os.path.normpath(os.path.join(keydir, 'svr.key')) client_cf = os.path.normpath(os.path.join(keydir, 'clt.cert')) client_kf = os.path.normpath(os.path.join(keydir, 'clt.key')) class client: def __init__(self): self.ctx = OpenSSL.SSL.Context(OpenSSL.SSL.TLSv1_METHOD) self.ctx.set_verify(OpenSSL.SSL.VERIFY_PEER, self.verifycb) self.ctx.use_privatekey_file(client_kf) self.ctx.use_certificate_file(client_cf) self.ctx.load_verify_locations(ca_cf) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.co = OpenSSL.tsafe.Connection(self.ctx, sock) def verifycb(self, conn, cert, errnum, depth, ok): return ok if __name__ == '__main__': time.sleep(5) for i in range(10000): print i clt = client() clt.co.close() del clt.ctx del clt.co time.sleep(10) when both the del clt.ctx and del clt.co lines are there, there is no leak at all. if both of them are commented out, the memory usage goes to about 100MB, and if only the context is deleted, the memory usage is about 80MB. all tests are done on Red Hat 8.0, both with the standard python and openssl, and with self compiled ones, the results are the same. (when using the OpenSSL.SSL.Connection instead of the tsafe one, nothing changes). i cannot exactly recall the results of using a statically linked openssl right now, but the leak was there too. i will test it both on Red Hat 7.3 and Windows, and send the results. right now i'm totally clueless. any suggestions? zoltan |
From: Martin <md...@md...> - 2003-01-06 17:54:04
|
m=E5n 2003-01-06 klockan 17.31 skrev Zoltan Felleg: > hello list, >=20 > i have a problem with pyOpenSSL, as follows: > if i create a network client, i must explicitly delete the context of it=20 > and the client itself to free the memory it is using. ie. a class with=20 > the ctx =3D SSL.Context, conn =3D SSL.Connection attributes is not remove= d=20 > from memory, if i do not delete the conn.ctx and the conn attributes. i=20 > was testing it with a simple loop that just created a thousand=20 > connection objects without connecting them to anywhere, and it used up=20 > about 20 megabytes of memory. besides that, there is another problem i=20 Would you mind detailing the exact test script you used? With the following script =3D=3D=3D from OpenSSL import SSL import socket while 1: ctx =3D SSL.Context(SSL.TLSv1_METHOD) conn =3D SSL.Connection(ctx, socket.socket()) =3D=3D=3D running on Debian unstable, using OpenSSL 0.9.6g, pyOpenSSL 0.5.1 and Python 2.2.2 I can't detect any leaking at all (monitoring it in top while it's running) Am I misunderstanding you? > could not work around, which arises at the server side of an SSL=20 > connection. using the simple server in the examples directory of the=20 > package, a thousand clients connecting, sending some data and then=20 > disconnecting also made the server to use significantly more memory than=20 > the amount it was using at the startup. is it a problem with me doing=20 > something evil, or is it a problem in pyOpenSSL or even in OpenSSL? in=20 > the first case what the heck am i doing wrong? the environment is Red=20 > Hat linux 8.0, OpenSSL 0.9.6h, pyOpenSSL 0.5.1, Python 2.2.2. I tried running python server.py 2000 >& /dev/null and while true; do echo foo | python client.py localhost 2000; done >& /dev/null and the memory usage of the server did increase, but very very very slowly, it took several *minutes* for it to reach 5% of my total memory (256M), and then I sat watching it for several more minutes and it never went over 6.1%. I don't know what to make of it. :) /Martin |