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
Director
[T] +420 602 444 164

duber studio(tm)
[M] i...@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@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to