Git Product home page Git Product logo

Comments (3)

Creeper19472 avatar Creeper19472 commented on June 6, 2024

Well I just modified the module's source code and now figured out that the Exception was handled by except SSL.Error.

from pyftpdlib.

Creeper19472 avatar Creeper19472 commented on June 6, 2024

I modified the source code to this:

            except SSL.Error as err:
                debug("SSL.Error call: _do_ssl_shutdown() -> shutdown(), err: %r" % err,
                      inst=self)
                # see:
                # https://github.com/giampaolo/pyftpdlib/issues/171
                # https://bugs.launchpad.net/pyopenssl/+bug/785985
                print(err)
                print(err.args)
                print(err.errno)
                if err.args and not getattr(err, "errno", None):
                    pass
                else:
                    raise

And it raised an error without doubt, saying that the Error object does not have an attribute named "errno".

However, I don't know when will the SSL.Error object have a attribute named this. I found that this exception class inherits from the built-in class of Exception, but it does not overload a new errno property in it, and this property is not owned by the built-in Exception class.

In summary, since the errno property never seems to exist, getattr() will always return its set default value None, and make the latter condition in the if statement always true; Err.args will always exist and have value because it returns the error number and description string of the exception, so this statement will cause the exception to always be ignored, resulting in an infinite loop of exception handling logic that I have not yet figured out.

from pyftpdlib.

Creeper19472 avatar Creeper19472 commented on June 6, 2024

Oh, I just looked up the code defining the other exceptions. It seems that the OSError class additionally defines the errno attribute.

However, SSL.Error seems to be less closely related to this exception class if its subclass has no other part that deals with OSError.

from pyftpdlib.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.