You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@httpd.apache.org by Prashant Shetty <pr...@hotpop.com> on 2005/01/10 18:01:44 UTC

[users@httpd] Problem with Function Pointers in my Module in Apache 1.3.33 on AIX

*The Problem* :
I am using a function pointer in my WebServer module to call  OpenSSL 
function - SSL_get_peer_certificate() from the main Apache process. The 
function definition is taken from the OpenSSL Library : /libssl.a/ . On 
execution, I get the following error in my Apache Error Log file :
/Error: Look up of symbol - SSL_get_peer_certificate failed - Function 
not implemented (SSL_get_peer_certificate)./

*Modules used to build Apache WebServer* :
mod_ssl version : *2.8.22-1.3.33*
OpenSSL version : *0.9.7d*  ( openssl-0.9.7e  is giving problem while 
building on AIX )
Apache version : *1.3.33*
AIX version :  *4.3* and *5.2*
gcc version : *2.95.3*

*Code* :
----------------------------------------------------------------------------
void * libssl = NULL;
typedef X509* (*funcptr)(SSL*);
funcptr fptr = NULL;

// Get the handle to main Apache process
libssl = dlopen (NULL, RTLD_NOW | RTLD_GLOBAL | RTLD_MEMBER ); 
fptr = (funcptr) dlsym(libssl, "SSL_get_peer_certificate");
----------------------------------------------------------------------------

*Details :*
Initially, the problem I faced was that the function symbol 
/SSL_get_peer_certificate/, was getting garbage collected  ( During 
linking and binding on AIX, any unused or unreferenced symbols are 
deleted ). This was the output of /nm/ command on /httpd/ executable :
.SSL_get_peer_certificate T   269039260
.. ie .. the function definition was visible only in the Text Section.

Hence, while building Apache, I specifically exported the function 
symbol using -u flag with /ld/. The /make /command is :
make MFLAGS="EXTRA_LDFLAGS='-uSSL_get_peer_certificate'"

The output of /nm/ command on /httpd/ executable now is :
.SSL_get_peer_certificate T   269039260
SSL_get_peer_certificate D   536993772
SSL_get_peer_certificate d   536993772      12
Now, the function is visible in the Data Section both at global and 
local level.

But I am still not able to access the function using the pointer. Same 
is the case with accessing the functions in my own module, using a pointer.

*Further Observations :*
- If we do a /dlsym /to get the handle of a function defined *inside 
Apache Code*, there is no such problem.
- There is no problem using function pointers in the rest of our 
application.

Has anybody else faced a similar problem? Any pointers or related links 
would be of great help.

Thanks in Advance,
Prashant.


Re: [users@httpd] Problem with Function Pointers in my Module in Apache 1.3.33 on AIX

Posted by Leif W <wa...@usa.net>.
This post probably belongs on the developer's list, dev@httpd.apache.org 
.

Use text-only, not HTML (no BOLD, no italic, no underline, no font 
changes) if you hope for a reply.

Leif



---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
   "   from the digest: users-digest-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org