[IronPython] IronPython and CPython httplib and ssl modules produce IOError

Zachary Gramana zgramana at pottsconsultinggroup.com
Fri Jun 10 16:32:51 CEST 2011


Lukas,

I'm working on this issue, or at least an issue that generates the same 
exception.  I do have a working patch, which I hope to contribute back 
after a little more work on it.

Check your API to see if you are making any calls to socket.makefile(). 
  If you do, and subsequently close the fileobject (but not the socket 
object), the underlying .NET Socket will also get closed (and garbage 
collected), even though other objects are still referencing it. 
However, the Python socket will not be aware of this corrupt state, and 
subsequent socket operations will raise the exception.

Not sure why subsequent attempts work for you, other than that perhaps 
your API has error handling code that re-create the connection.

Hope this might be helpful.

Best Regards, Zack



On 6/10/2011 7:55 AM, Lukáš Duběda wrote:
> Hi there,
>
> I hope someone out there could help me out with this problem.
>
> I have a API written in Python (CPython that is) that relies on
> some of the CPython modules, such as ssl and httplib.
>
> The problem is, when I call the API and its methods via IronPython
> I get IOError: "System.IO.IOException: Unable to write data to the
> transport connection: Cannot access a disposed object."
>
> The weirdest thing is, if I make the call for the second time,
> all goes through beautifully. Then again, thrid time errors out, but
> fourth goes through just fine. And so on so forth.
>
> Here's the exact script excerpt (with the thorough error output) at
> pastebin: http://pastebin.com/TKbKDtPb
>
> I call the sg.find_one() method the first time, which produces the
> IOError. Then at the end of the error output, I call it again and
> as you can see, it returns the correct object.
>
> Please, could anyone tell me how to deal with this without rewriting
> the given API to use .NET objects?
>
> Thanks a lot in advance, cheers,
>



More information about the Ironpython-users mailing list