Hi all,
I try to get some response from 2 servers through ssl connection and i wrote
the following code. I have to call this routine twice and it works fine at
the first time, but if i try to call this routine again to connect to
another server, it fails at SslRead and returns sslErrNotImplemented even I
don't set any socket options. I can use SslWrite to send data to the server,
but can not get response from the server. Any ideas?
Err QueryServerInfo(CString strServer, CString strSend, CString& strRet)
{
Err err = errNone;
UInt16 nLibRef = 0;
err = SysLibLoad(kSslLibType, kSslLibCreator, &nLibRef);
if (err) {
// error handler
}
err = SslLibOpen(nLibRef);
if (err) {
// error handler
}
SslLib* pCtxTmp = NULL;
err = SslLibCreate(nLibRef, &pCtxTmp);
if (err) {
// error handler
}
SslContext* pCtx = NULL;
err = SslContextCreate(nLibRef, pCtxTmp, &pCtx);
if (err) {
// error handler
}
NetSocketRef nRef = 0;
err = OpenSSLSocket(strServer, &nRef);
if (err) {
// error handler
}
err = SslContextSet_Socket(nLibRef, pCtx, nRef);
if (err) {
// error handler
}
SslCallback verifyCallback;
verifyCallback.callback = VerifyCallback;
SslContextSet_VerifyCallback(nLibRef, pCtx, &verifyCallback);
err = SslOpen(nLibRef, pCtx, sslOpenModeSsl|sslOpenUseDefaultTimeout, 0);
if (err) {
// error handler
}
UInt16 nSend = 0;
UInt16 nRead = 0;
nSend = SslWrite(nLibRef, pCtx, strSend.GetBuffer(), strSend.GetLength(),
&err);
if (err) {
// error handler
}
char pszGet[2000];
nRead = SslRead(nLibRef, pCtx, pszGet, 2000, &err);
if (err) {
// error handler
}
strRet = pszGet;
err = SslClose(nLibRef, pCtx, sslCloseUseDefaultTimeout, 0);
if (err) {
// error handler
}
err = SslContextDestroy(nLibRef, pCtx);
if (err) {
// error handler
}
err = SslLibDestroy(nLibRef, pCtxTmp);
if (err) {
// error handler
}
err = SslLibClose(nLibRef);
if (err) {
// error handler
}
err = SysLibRemove(nLibRef);
if (err) {
// error handler
}
if (NetLibSocketClose(g_nNetLibRef, nRef, DEFAULT_NET_LIB_TIME_OUT, &err)
== -1) {
// error handler
}
return err;
}
--
For information on using the Palm Developer Forums, or to unsubscribe, please see
http://www.palmos.com/dev/support/forums/