azstyx has asked for the wisdom of the Perl Monks concerning the following question:

Hello Folks!
Environment:
libwww-perl: 5.805 Crypt::SSLeay -- 0.51 OS: Solaris 8 Perl: 5.8.4
Issue Summary: Issue with SSL POST operation.
I have a script that randomly fails against devices using HTTPS example: I run the script 3 times aganst the same device and all works ok. Then the next 3 runs fail. Then the next run works. I receive these types of messages: StatusLine500 Server closed connection without sending any data back StatusLine500 EOF When the script is run on our old dev server using libwww-perl: 5.79; it seems to work everytime ok. However, it randomly fails when using libwww-perl: 5.803 or 5.805. Any suggestions on how to debug this? I would appreciate any feedback at all! :)
$ua = LWP::UserAgent->new; # create new user agent obje +ct $url = "$baseUrl$urlConfigFile"; # create URL for getting confi +g ascii file # set up HTTP REQUEST object $httpReq = HTTP::Request->new(POST=>$url) ; # init Request +object $httpReq-> content_type('application/x-www-form-urlencoded') ; $httpReq->content('DownloadFormat=ascii'); # pass form vari +ables $httpReq-> authorization_basic($UID, $upassw) ; # credentials $strReq = $httpReq->as_string( ); # debug dump of Request objec +t print "\nThe Request:\n$strReq\n"; print "\n\nNow get the WSD config ascii file.\n"; print "Submitting browser request using url [$url].\n"; $httpResp = $ua->request($httpReq) ; # launch request $statusLine = $httpResp->status_line(); $statusCode = $httpResp->code(); $statusMsg = $httpResp->message(); print "HTTP Response: StatusLine[$statusLine] Code[$statusCode] Messag +e[$statusMsg]\n"; if ($httpResp->is_success) { print "Request OK.\n"; } else { die "Request failed.\n"; } # ok, save content to file open(FILEO, ">$asciiFile") || die "Error $! Could not open file $ascii +File.\n"; print FILEO $httpResp->content; close(FILEO);
Example run:
./getwsd4.pl device-b 10.10.10.10 1900 admin admin Processing devName [device-b] ip addr [10.10.10.10]. Using libwww-perl-5.803 Output file is [/export/ieapps/local/test/device-b.asc]. Base URL [https://10.10.10.10:1900] The Request: POST https://10.10.10.10:1900/dynamic/File/Configuration/ReceivefromDe +vice Authorization: Basic ZG16c3VwcDpmaXNINHNAIWU= Content-Type: application/x-www-form-urlencoded DownloadFormat=ascii Now get the WSD config ascii file. Submitting browser request using url [https://10.10.10.10:1900/dynamic +/File/Configuration/ReceivefromDevice]. HTTP Response: StatusLine[500 EOF] Code[500] Message[EOF] Request failed.

Replies are listed 'Best First'.
Re: libwww-SSL Post Issue
by Magius_AR (Sexton) on Aug 03, 2006 at 22:17 UTC
    I suggest the scientific approach...find out exactly what version breaks your implementation. If you know 5.79 works, try 5.800. Continue incremental testing until you get the undesired behavior. Then check the Changes log of libwww-perl and find out what changed for that version. That would give you at least an idea of where to look.

    Other explorative options that might provide fruitful information include network sniffing (is the communication different between versions?), and maybe even throwing some debug statements into the libwww-perl code (such as in the request function) to find out where it's going astray.

    Find out the when and where first...then worry about the why.