This is a repost of "duplicate sockets ? mod-perl 2.0.2, apache 2.2", because I still don't understand what's happening and can still not find the problem. I would be very grateful if anyone could help me, because I'm out of my wits.

More information is currently accessible at
http://ska.dev.wissensbank.com/mod_perl_list/
which provides a link to the module code, access to the logfiles involved etc..

Summary :

I wrote a custom PerlAuthenHandler called AM::Authtest.pm.
This handler, at some stage, open a TCP connection to an external database server module, sends a message on that connection, reads the module's answer on the same connection, and closes the connection. The answer is supposed to indicate if the authentication succeeds. By and large, according to its logfile, the module seems to be doing what it should, in the order it should do it. The problem is that, although in the PerlAuthHandler (to my knowledge and according to the logfile), the TCP connection in the handler is opened only once, the external server module seems to see *two* separate connections being opened almost simultaneously. Subsequently what *seems* to happen is that the PerlAuthHandler sends the message on one of these connections, but tries to read the answer from the other, and gets stuck waiting for something that never comes. I say *seems*, because that's what I guess from the various logfiles, although I must say I'm really in the dark here.

Question 1 : has anyone seen this kind of problem before ?

Question 2 : the external server with whom I communicate is a piece of code outside my control, and what it logs is a bit limited. I would gladly try to provide a simplified example of what is happening, but for that I would need another TCP server module, to which I could open a connection, send something and read a response. It would have to be something that leaves a clear trace of wether one or two connections are taking place. (I could use the "echo" port, but that leaves no separate trace for instance).
Anyone think of something ?

Thank you in advance.


P.S.
Some data already established by earlier attempts :
- the PerlAuthenHandler module is not pre-loaded at Apache server start/restart - according to the Apache logfiles, the handler is called only once, when it should (well, twice in fact but the first time is just returns a 401 response and does not open a TCP connection) - opening the TCP connection via IO::Socket::INET, or socket() makes no difference, there are always 2 connections instead of one - reading/writing to the connection via read,sysread,syswrite,send/recv, etc.. make no difference - using a perl "handle" such as SRV or a lexical like "my $SRV" for the handle makes no difference - the same server on which all this is taking place has lots of perl and Apache stuff running on it, also with client/server socket stuff, and everything else seems to run fine - I am not perl-guru level, but no beginner either. I have written perl TCP client/server applications before, and other Apache2 modules. But this case really has me stumped.



Reply via email to