Giter Site home page Giter Site logo

Comments (10)

highlyunavailable avatar highlyunavailable commented on May 26, 2024

Ouch, that's nasty. Thanks for reporting this, I'll see what I can do to fix it up. It wasn't getting hit before because if the cert was empty (which is the vast majority of the cases) it never tried to clear the handler, but if someone had tried to use this function on Mono, it would have crashed the same way.

from consuldotnet.

gdavison avatar gdavison commented on May 26, 2024

It feels a little hackish, but simply wrapping the certificate operations in a catch NotImplementedException block works.

from consuldotnet.

highlyunavailable avatar highlyunavailable commented on May 26, 2024

I think that's what I will have to do. Out of curiosity are you using the Nuget package or compiling?

I was thinking of adding a conditional [Obsolete] attributes to the property for Mono to prevent use and just make the setter/getter do nothing under mono with a runtime check but that doesn't help if you are using the precompiled binaries.

from consuldotnet.

highlyunavailable avatar highlyunavailable commented on May 26, 2024

Actually I can just propagate the exception to the setter in the config object so it fails if you try to set it explicitly only, and skip trying to reconfigure the handler if running on mono. Seems fairly clean to me.

from consuldotnet.

highlyunavailable avatar highlyunavailable commented on May 26, 2024

This is fixed - the tests now run successfully under Mono on Linux.

It does feel a bit hackish but it should at least throw a useful PlatformUnsupportedException if you try to set client certs under Mono, and not try to set them in the event handler if under Mono. I've cut a package as 0.6.4.5.

from consuldotnet.

gdavison avatar gdavison commented on May 26, 2024

I was using the NuGet package. I'm still getting a NotImplementedException with 0.6.4.5. I'll investigate some more, as there was some weirdness with downloading the packages, but it did also fail on travis-ci

from consuldotnet.

highlyunavailable avatar highlyunavailable commented on May 26, 2024

Hm, I can't get Travis set up right now because while I maintain this repo I don't actually have admin on it.

What's interesting here is I'm able to repro the error if I make a new project with the nuget package attached, which makes sense because the nuget package was compiled on VS2015 but if I run the tests it's compiled on Mono, which IFDEFs this out.

I shall continue to investigate.

from consuldotnet.

highlyunavailable avatar highlyunavailable commented on May 26, 2024

It is because the runtime check is backwards:

https://github.com/PlayFab/consuldotnet/blob/0.6.4.5/Consul/Client.cs#L47

Should be: return Type.GetType("Mono.Runtime") == null;

from consuldotnet.

highlyunavailable avatar highlyunavailable commented on May 26, 2024

So, for CI, this is an interesting challenge. I use #if to cut the offending code out on Mono entirely so you can't even set it, but only if compiled under Mono. However, this means that tests pass perfectly well if compiled on Mono but would break if the Nuget package (compiled with MSBuild) is used. What a weird scenario, and I definitely would not have caught this particular issue if I'd just compiled under Mono on Travis, though I would have caught the original issue.

This is now actually fixed under 0.6.4.6. Sorry about that!

from consuldotnet.

gdavison avatar gdavison commented on May 26, 2024

Yes, that's got it! My Travis build is green :) Thanks for the fix.

It's definitely an odd case. Using the NuGet package is so convenient, though!

from consuldotnet.

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.