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

Lukáš Duběda loocas at duber.cz
Fri Jun 10 19:49:29 CEST 2011

Thank you, Zack,

unfortunately, editing the API I got isn't an option, so the
only workaround I found was to catch the exception and completely
ignore it, which is terrible, but at least it works.

So you're saying that this is actually a "bug" in IronPython
that's being worked at?

Thanks again, much appretiated!

Lukáš Duběda
[T] +420 602 444 164

duber studio(tm)
[M] info at duber.cz
[W] http://www.duber.cz

[A] R.A.Dvorského 601, Praha 10
[A] 10900, Czech Republic, Europe

On 10.6.2011 16:32, Zachary Gramana wrote:
> 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,
> _______________________________________________
> Users mailing list
> Users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

More information about the Ironpython-users mailing list