On Aug 17, 2009, at 10:27 AM, Jean-Philippe Barette-LaPierre wrote:

testing.cgi:
       libcurl.so.4 => /usr/lib/libcurl.so.4 (0x4048a000)
example06:
       libcurl.so.3 => /usr/local/lib/libcurl.so.3 (0x400d1000)

You need to link with the same library. So, when you compile curlpp AND your problem, ensure you link to the same libraries. The different libssl libraries might be from different packages, meaning from different distributions. Honestly it seems to be a mess. Can you send a ldd output of:

libssl.so.0.9.7
libssl.so.4
libcurlpp.so.0
libcurl.so.3
libcurl.so.4

And please send both installed curl version. You seems to have one
in /usr/ and one in /usr/local. So, the version can be retreived by looking
at:

/usr/include/curl/curlver.h
/usr/local/include/curl/curlver.h

So, curlpp is linked to libcurl.so.3. I don't know why you got two different version

On Mon, Aug 17, 2009 at 10:01 AM, tatebn <[email protected]> wrote:

This is the "ldd" output for testing.cgi.

 libmysqlclient.so.10 => /usr/lib/mysql/libmysqlclient.so.10
(0x4001e000)
       libcrypt.so.1 => /lib/libcrypt.so.1 (0x40055000)
       libpfpro.so => /usr/local/verisign/payflowpro/linux/lib/
libpfpro.so (0x40082000)
       libcurlpp.so.0 => /usr/lib/libcurlpp.so.0 (0x40128000)
       libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x40152000)
       libidn.so.11 => /usr/lib/libidn.so.11 (0x40205000)
       libssh2.so.1 => /usr/lib/libssh2.so.1 (0x40236000)
       libssl.so.0.9.7 => /usr/lib/libssl.so.0.9.7 (0x40257000)
       libcrypto.so.0.9.7 => /usr/lib/libcrypto.so.0.9.7 (0x4028a000)
       libldap.so.2 => /usr/lib/libldap.so.2 (0x4038f000)
       libgssapi_krb5.so.2 => /usr/kerberos/lib/libgssapi_krb5.so.2
(0x403c1000)
       libkrb5.so.3 => /usr/kerberos/lib/libkrb5.so.3 (0x403d4000)
       libk5crypto.so.3 => /usr/kerberos/lib/libk5crypto.so.3
(0x40433000)
       libz.so.1 => /usr/lib/libz.so.1 (0x40443000)
       libm.so.6 => /lib/tls/libm.so.6 (0x40451000)
       libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x40473000)
       libc.so.6 => /lib/tls/libc.so.6 (0x42000000)
       libpthread.so.0 => /lib/tls/libpthread.so.0 (0x4047b000)
       libcurl.so.4 => /usr/lib/libcurl.so.4 (0x4048a000)
       libnsl.so.1 => /lib/libnsl.so.1 (0x4051c000)
       libssl.so.4 => /lib/libssl.so.4 (0x40531000)
       libcom_err.so.3 => /usr/kerberos/lib/libcom_err.so.3
(0x40566000)
       libresolv.so.2 => /lib/libresolv.so.2 (0x40568000)
       libdl.so.2 => /lib/libdl.so.2 (0x4057b000)
       liblber.so.2 => /usr/lib/liblber.so.2 (0x4057f000)
       libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0x4058b000)
       /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

But the odd thing is, it's all good from the command line.  I switched
the owner and group for example06 to match that of testing.cgi and it
still ran just fine.   Looks like test.cgi is loading two versions of
libssl.so.

here's ldd for example06.  There are some significant differences.
example06 is apparently not even loading curlpp.  And there are
version diffs that could be significant. Let me know what you think.

 libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x4001e000)
       libcurl.so.3 => /usr/local/lib/libcurl.so.3 (0x400d1000)
       libssl.so.0.9.7 => /usr/lib/libssl.so.0.9.7 (0x400fe000)
       libcrypto.so.0.9.7 => /usr/lib/libcrypto.so.0.9.7 (0x40131000)
       libdl.so.2 => /lib/libdl.so.2 (0x40236000)
       libz.so.1 => /usr/lib/libz.so.1 (0x4023a000)
       libm.so.6 => /lib/tls/libm.so.6 (0x40249000)
       libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x4026b000)
       libc.so.6 => /lib/tls/libc.so.6 (0x42000000)
       /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

On Aug 17, 9:10 am, Jean-Philippe Barette-LaPierre
<[email protected]> wrote:
> On Sun, Aug 16, 2009 at 6:55 PM, tatebn <[email protected]> wrote:
>
> > It looks at this point like everything is find if the URL option isn't > > set. Any idea why that would be? I don't know enough about incoming/ > > outgoing connection setttings to know how to check whether or not the > > cgi is allowed to connect to anything. My current guess is that it's > > not, and that's why it dies with an outgoing connection. Any insight
> > or helpful advice?
>
> can you send the "ldd" output for your cgi, curlpp and libcurl?
> if you don't know what is ldd, type this on the command line:
>
> man ldd
>
>
>
> > Thanks,
> > Brandon
>
> > On Aug 16, 12:17 am, tatebn <[email protected]> wrote:
> > > So it looks like the curlpp examples are working, but the program I > > > need to work still isn't. Here's the code, what in here would make
> > > perform() die?
>
> > > Note: perform() also dies if I comment out all the options except
> > > host.
>
> > > //--------------------------------------------------------------------
> > > // Includes
> > > //--------------------------------------------------------------------
> > > #include "verisign_io.h"
> > > #include "file_io.h"
> > > #include "error_lib.h"
> > > #include "logging.h"
> > > #include "toolkit.h"
> > > #include "parm.h"
>
> > > //using current time in seconds and credit card number for unique
> > > transaction id
> > > #include <time.h>
> > > #include <string>
> > > #include <sstream>
> > > #include <iostream>
>
> > > //#include "curl/curl.h"
> > > #include <curlpp/cURLpp.hpp>
> > > #include <curlpp/Easy.hpp>
> > > #include <curlpp/Options.hpp>
> > > #include <curlpp/Exception.hpp>
>
> > > #ifdef CGI_VERSION
> > >         #include "cgic.h"
> > > #endif
>
> > > //
> > > *********************************************************************
> > > // Global Functions
> > > //
> > > *********************************************************************
>
> > > //--------------------------------------------------------------------
> > > // GetValueFromResponseString
> > > //--------------------------------------------------------------------
> > > bool GetValueFromResponseString (const char* key,
>
> > > TString& value,
>
> > > TString responseString)
> > > {
> > >         char*           startPtr        = NULL;
> > >         char*           endPtr          = NULL;
> > >         size_t          offset          = 0;
> > >         size_t          length          = 0;
>
> > >         value = "";
>
> > >         startPtr = responseString.Find (key);
> > >         if (startPtr)
> > >         {
> > >                 startPtr += strlen(key);
> > > offset = responseString.PointerToOffset (startPtr); > > > endPtr = responseString.Find ("&", true, offset);
> > >                 if (endPtr)
> > >                         length = endPtr - startPtr;
> > >                 else
> > >                         length = strlen(startPtr);
>
> > >                 value = responseString.SubString(offset,length);
> > >         }
>
> > >         return (startPtr != NULL);
>
> > > }
>
> > > //--------------------------------------------------------------------
> > > // CallVerisign
> > > //--------------------------------------------------------------------
> > > bool CallVerisign (const TDBSplitReport* dbObjPtr,
> > > TString creditCardNumber,
> > >                                          TString expirationDate,
> > >                                          float amount,
> > > TString customerZipCode, > > > TString customerAddress, > > > TString authorizationCode, > > > TString transactionType,
> > >                                          TString comment,
> > >                                          TString& answerText,
> > >                                          TString& referenceID)
> > > {
> > >         bool                    success = false;
> > >         bool                    isTest = false;
> > >         //int                           verisignContext;
> > >         int                             resultCode;
> > >         TString                 localAmount;
> > >         TString                 verisignArgs;
> > >         TString                 responseMessage;
> > >         //TString                       referenceID;
> > >         TString                 tmpString;
> > >         TString                 responseString;
> > >         TString                 logEntry;
> > >         //char                  *responseBuffer;
>
> > > AddLogEntry(dbObjPtr, "INFO\tVerisign.cc\tAbout to setup
> > > environment");
>
> > >         // Setup the environment so it can find the certificate
> > > setenv("PFPRO_CERT_PATH", "/usr/local/verisign/ payflowpro/
> > > linux/certs", 1);
>
> > >         // Nullify the answer text
> > >         answerText = "";
> > >         // Adjust some arguments
> > >         creditCardNumber.NumbersOnly();
> > >         expirationDate.NumbersOnly();
> > >         customerZipCode.NumbersOnly();
> > >         if (customerZipCode.IsEmpty())
> > >                 customerZipCode = "99999";
> > >         customerZipCode = customerZipCode.SubString(0,5);
> > >         if (comment.IsEmpty())
> > >                 comment = "---";
> > >         comment = comment.SubString(0,18);
> > >         localAmount.CopyFrom(amount,2);
> > >         // convert expiration from YYYY to MMYY format
> > >         tmpString = expirationDate;
> > >         expirationDate = tmpString.SubString(4,2);
> > >         expirationDate += tmpString.SubString(2,2);
>
> > >         // setup the log entry
> > >         logEntry = "Verisign Transaction\t";
> > >         logEntry += transactionType;
> > >         logEntry += "\t";
> > >         logEntry += comment;
> > >         logEntry += "\t";
> > >         logEntry += localAmount;
> > >         logEntry += "\t";
> > >         tmpString = creditCardNumber.SubString(0,1);
> > >         tmpString += "-";
> > >         tmpString += creditCardNumber.SubString(0,4,true);
> > >         logEntry += tmpString;
> > >         logEntry += "\t";
> > >         logEntry += expirationDate;
> > >         logEntry += "\t";
>
> > > AddLogEntry(dbObjPtr, "INFO\tVerisign.cc\tEntering Try");
>
> > > try{
> > > if (strcasecmp(creditCardNumber,kTestCreditCardNumber) == 0)
> > >         {
> > >                 isTest = true;
> > >                 //answerText = kApprovedPrefixString;
> > >                 answerText += "987654321";
> > >         }
> > >         else
> > >         {
> > > AddLogEntry(dbObjPtr, "INFO\tVerisign.cc\tNot A Test");
> > >                 // Build up the application's piped arguments
> > >                 verisignArgs += "TRXTYPE=";
> > >                 verisignArgs += transactionType;
> > >                 verisignArgs += "&TENDER=C";
> > >                 verisignArgs += "&PARTNER=";
> > >                 verisignArgs += kVerisignPartner;
> > >                 verisignArgs += "&VENDOR=";
> > >                 verisignArgs += kVerisignVendor;
> > >                 verisignArgs += "&USER=";
> > >                 verisignArgs += kVerisignUser;
> > >                 verisignArgs += "&PWD=";
> > >                 verisignArgs += kVerisignPassword;
> > >                 verisignArgs += "&ACCT=";
> > >                 verisignArgs += creditCardNumber;
> > >                 verisignArgs += "&EXPDATE=";
> > >                 verisignArgs += expirationDate;
> > >                 verisignArgs += "&AMT=";
> > >                 verisignArgs += localAmount;
> > >                 verisignArgs += "&COMMENT1[";
> > >                 verisignArgs += comment.GetLength();
> > >                 verisignArgs += "]=";
> > >                 verisignArgs += comment;
> > >                 verisignArgs += "&STREET[";
> > >                 verisignArgs += customerAddress.GetLength();
> > >                 verisignArgs += "]=";
> > >                 verisignArgs += customerAddress;
> > >                 verisignArgs += "&ZIP=";
> > >                 verisignArgs += customerZipCode;
> > >                 verisignArgs += "\r\n";
> > > AddLogEntry(dbObjPtr, "INFO\tVerisign.cc\tArgs Set Up");
>
> > > //Using credit card number and time in seconds to
> > > create unique id
> > >                 char uniqueID[64];
> > >                 strcpy(uniqueID, creditCardNumber);
> > > sprintf(uniqueID, "%s%ld", uniqueID, time(NULL));
> > > AddLogEntry(dbObjPtr, "INFO\tVerisign.cc\tBuilt Unique ID");
>
> > >                 //set the headers.
> > >                 std::list<std::string> headers;
> > > headers.push_back("Content-Type: text/ namevalue");
> > >                 headers.push_back("Content-Length: " +
> > > verisignArgs.GetLength());
> > >                 headers.push_back("X-VPS-Timeout: 45");
> > > headers.push_back("X-VPS-Request_ID:" + std::string
> > > (uniqueID));
>
> > > AddLogEntry(dbObjPtr, "INFO\tVerisign.cc\tRest Of Headers Set");
>
> > > AddLogEntry(dbObjPtr, "INFO\tVerisign.cc\tInit Curl");
> > >                 cURLpp::Cleanup myCleanup;
> > >                 cURLpp::Easy myRequest;
> > >                 myRequest.setOpt(new cURLpp::Options::Url
> > > (kVerisignHost));
> > >                 myRequest.setOpt(new cURLpp::Options::Port
> > > (kVerisignPort));
> > >                 myRequest.setOpt(new cURLpp::Options::Timeout
> > > (kVerisignTimeout));
> > > myRequest.setOpt(new cURLpp::Options::Header(1)); > > > myRequest.setOpt(new cURLpp::Options::FollowLocation
> > > (0));
> > > myRequest.setOpt(new cURLpp::Options::SslVerifyPeer
> > > (0));
> > > myRequest.setOpt(new cURLpp::Options::SslVerifyHost
> > > (2));
> > > myRequest.setOpt(new cURLpp::Options::ForbidReuse
> > > (true));
> > >                 myRequest.setOpt(new cURLpp::Options::Post(1));
>
> ...
>
> read more ยป
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "curlpp" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/curlpp?hl=en
-~----------~----~----~----~------~----~------~--~---



Here's what I got. Let me know what you think. I know these are kind of a mess. This was set up long before I inherited it, and now I'm drowning in it.

 ldd libssl.so.0.9.7
        libcrypto.so.0.9.7 => /usr/lib/libcrypto.so.0.9.7 (0x4003b000)
        libdl.so.2 => /lib/libdl.so.2 (0x40140000)
        libc.so.6 => /lib/tls/libc.so.6 (0x42000000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)

 ldd libssl.so.4
        libcrypto.so.0.9.7 => /usr/lib/libcrypto.so.0.9.7 (0x4003b000)
        libdl.so.2 => /lib/libdl.so.2 (0x40140000)
        libc.so.6 => /lib/tls/libc.so.6 (0x42000000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)

ldd libcurlpp.so.0
        libcurl.so.4 => /usr/lib/libcurl.so.4 (0x40032000)
        libidn.so.11 => /usr/lib/libidn.so.11 (0x400c4000)
        libssh2.so.1 => /usr/lib/libssh2.so.1 (0x400f4000)
        libssl.so.4 => /lib/libssl.so.4 (0x40115000)
        libcrypto.so.4 => /usr/lib/libcrypto.so.4 (0x4014a000)
        libldap.so.2 => /usr/lib/libldap.so.2 (0x4024f000)
libgssapi_krb5.so.2 => /usr/kerberos/lib/libgssapi_krb5.so.2 (0x40282000)
        libkrb5.so.3 => /usr/kerberos/lib/libkrb5.so.3 (0x40295000)
libk5crypto.so.3 => /usr/kerberos/lib/libk5crypto.so.3 (0x402f3000)
        libz.so.1 => /usr/lib/libz.so.1 (0x40303000)
        libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x40311000)
        libm.so.6 => /lib/tls/libm.so.6 (0x403c4000)
        libc.so.6 => /lib/tls/libc.so.6 (0x42000000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x403e7000)
libcom_err.so.3 => /usr/kerberos/lib/libcom_err.so.3 (0x403ef000)
        libresolv.so.2 => /lib/libresolv.so.2 (0x403f1000)
        libdl.so.2 => /lib/libdl.so.2 (0x40403000)
        liblber.so.2 => /usr/lib/liblber.so.2 (0x40408000)
        libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0x40414000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)
        libcrypt.so.1 => /lib/libcrypt.so.1 (0x40427000)

 ldd libcurl.so.3
        libssl.so.0.9.7 => /usr/lib/libssl.so.0.9.7 (0x40035000)
        libcrypto.so.0.9.7 => /usr/lib/libcrypto.so.0.9.7 (0x40068000)
        libdl.so.2 => /lib/libdl.so.2 (0x4016d000)
        libz.so.1 => /usr/lib/libz.so.1 (0x40171000)
        libc.so.6 => /lib/tls/libc.so.6 (0x42000000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)

ldd libcurl.so.4
        libssl.so.2 => /lib/libssl.so.2 (0x4009a000)
        libcrypto.so.2 => /usr/lib/libcrypto.so.2 (0x400cf000)
        libldap.so.2 => /usr/lib/libldap.so.2 (0x401d4000)
libgssapi_krb5.so.2 => /usr/kerberos/lib/libgssapi_krb5.so.2 (0x40206000)
        libkrb5.so.3 => /usr/kerberos/lib/libkrb5.so.3 (0x40219000)
libk5crypto.so.3 => /usr/kerberos/lib/libk5crypto.so.3 (0x40277000)
        libz.so.1 => /usr/lib/libz.so.1 (0x40288000)
        libc.so.6 => /lib/tls/libc.so.6 (0x42000000)
libcom_err.so.3 => /usr/kerberos/lib/libcom_err.so.3 (0x40296000)
        libresolv.so.2 => /lib/libresolv.so.2 (0x40298000)
        libdl.so.2 => /lib/libdl.so.2 (0x402aa000)
        liblber.so.2 => /usr/lib/liblber.so.2 (0x402ae000)
        libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0x402bb000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000)
        libcrypt.so.1 => /lib/libcrypt.so.1 (0x402ce000)

/usr/include/curl/curlver.h
        #define LIBCURL_VERSION "7.19.5"

/usr/local/include/curl/curlver.h
        #define LIBCURL_VERSION "7.12.2"

Reply via email to