> jaltman> The problem has to do with linkage.  Attempts to substitute
> jaltman> the 0.9.6 DLLs for 0.9.5a DLLs will fail due to missing
> jaltman> functions:
> 
> Is there a way, with DLL's, to say that if a program is linked with a
> previous version, it must be relinked?  For example, under OpenVMS I
> can assign a shared library a major and a minor number, and also say
> what condition make a new shared library valid for use with programs
> that were linked with a previous version (usually, a shared library
> can be used with programs that were linked with a version with the
> same major and a lesser or equal minor).

> I'm of the opinion that if that functionality is missing, it's a flaw
> in the operating system.

What you are describing has nothing to do with the current problem.
The current problem is that you have removed an entry point.  What is
the operating system supposed to do other than fail the load the DLL
and the aplication that is linked to it.

> jaltman> For compatibility 
> jaltman> 
> jaltman>   #define sk_GENERAL_NAME_num(st) SKM_sk_num(GENERAL_NAME, (st))
> jaltman> 
> jaltman> should have been implemented as a stub function instead of a macro.
> 
> And what would that stub do?  Tell you that you need to
> recompile/relink and do an abort()?

The stub function would simply be

   int sk_GENERAL_NAME_num(STACK * st)
   {
      return(SKM_sk_num(GENERAL_NAME, (st)));
   }

Since you are not changing the functionality there is no reason for
you to be breaking the linkage by removing an entry point.

And since you are not simply changing the linkage, but instead
replacing functions by macros, when the OpenSSL DLLs are replaced all
applications need to be recompiled from scratch, not just relinked.

---


In my situation, I could test the version number of the DLL if it were
added to the DLL resources.  I can do this because I don't link my
executables to the .LIB files.  Instead I compile and load the DLLs at
run time with LoadLibrary() and GetProcAddress().  So if entry points
are missing I can detect them at runtime.  BUT I attempt to write my
code in such a way that it is compatible with multiple releases.

------

Another problem:

  RAND_status() 

takes over a minute to return the first time it is called within a
process on Win2000.



                  Jeffrey Altman * Sr.Software Designer
                 The Kermit Project * Columbia University
               612 West 115th St * New York, NY * 10025 * USA
     http://www.kermit-project.org/ * [EMAIL PROTECTED]


______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to