This forum has been archived. Please start a new discussion on GitHub.

IceSSL failure on Windows XP Embedded

Just updated from Ice 2.1 to 3.2 and IceSSL is now throwing an exception in ConnectorI.cpp line 138. This only happens on Windows XP embedded (thin client) and not on Windows XP Professional. Looking at line 138, it looks like it is a catch-all for unknown failures from SSL_connect.

What I have noticed is that I'm getting the warning from PlugInI.cpp line 237 about the PRNG not getting initialized. There is relatively little that goes on the seed the PRNG and I duplicated this in a standalone program using the same OpenSSL 0.9.8e that Ice 3.2 uses. My standalone SSL test program does not fail. I did change the #ifdef WINDOWS on line 178 in PlugIn.cpp to #ifdef _WIN32 thinking that maybe RAND_screen was not getting called but that didn't affect the outcome.

Any clues as to how I might find out what is going on ?

Mike King


  • mes
    mes California
    Hi Mike,

    Are you saying that everything was working fine for you with Ice 2.1 on Windows XP Embedded, but it fails now that you've updated to 3.2?

    When ConnectorI raises SocketException, what is the value of ex.error?

    Also, I'm not sure if it this will provide any useful information, but can you add the following code around line 137 of ConnectorI.cpp and tell us what it prints?
    Finally, please verify that there are no older versions of the OpenSSL DLLs in your \WINDOWS\system32 directory.

    - Mark
  • Mark,

    Our product was using ICE 2.1 and worked on Windows XP embedded. Rebuilding our product using ICE 3.2 with no other changes does not work on Windows XP embedded.

    The ex.error at this point = 0

    I attempted to add ERR_print_errors_fp() but the compiler can't find it. It looks like it would only be compiled out if OPENSSL_NO_FP_API is defined which it is not. I see that _ERR_print_errors_fp() is in the libeay.lib file so I am stumped about this one.

    I verified that there are no older versions of the OpenSSL DLLs in \WINDOWS\system32 directory.