зеркало из https://github.com/mozilla/pjs.git
Move nsCString from |operator char*()| to |get()| and |NS_CONST_CAST| where needed. bug=53057, r=dmose, sr=shaver
This commit is contained in:
Родитель
e7dd8a9127
Коммит
0b98c23d64
|
@ -629,8 +629,8 @@ nsPSMComponent::GetControlConnection( CMT_CONTROL * *_retval )
|
||||||
|
|
||||||
psmStatus = CMT_Hello( mControl,
|
psmStatus = CMT_Hello( mControl,
|
||||||
PROTOCOL_VERSION,
|
PROTOCOL_VERSION,
|
||||||
profilenameC,
|
NS_CONST_CAST(char*,profilenameC.get()),
|
||||||
NS_CONST_CAST(char*,(const char*)profilePath));
|
NS_CONST_CAST(char*,profilePath.get()));
|
||||||
if (psmStatus == CMTFailure)
|
if (psmStatus == CMTFailure)
|
||||||
goto failure;
|
goto failure;
|
||||||
|
|
||||||
|
|
|
@ -1,756 +0,0 @@
|
||||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public
|
|
||||||
* License Version 1.1 (the "License"); you may not use this file
|
|
||||||
* except in compliance with the License. You may obtain a copy of
|
|
||||||
* the License at http://www.mozilla.org/MPL/
|
|
||||||
*
|
|
||||||
* Software distributed under the License is distributed on an "AS
|
|
||||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
|
||||||
* implied. See the License for the specific language governing
|
|
||||||
* rights and limitations under the License.
|
|
||||||
*
|
|
||||||
* The Original Code is mozilla.org code.
|
|
||||||
*
|
|
||||||
* The Initial Developer of the Original Code is Netscape
|
|
||||||
* Communications Corporation. Portions created by Netscape are
|
|
||||||
* Copyright (C) 1998 Netscape Communications Corporation. All
|
|
||||||
* Rights Reserved.
|
|
||||||
*
|
|
||||||
* Contributor(s):
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "nspr.h"
|
|
||||||
#include "nsString.h"
|
|
||||||
#include "cmtcmn.h"
|
|
||||||
|
|
||||||
#include "nsIPSMComponent.h"
|
|
||||||
#include "nsIPSMSocketInfo.h"
|
|
||||||
#include "nsIServiceManager.h"
|
|
||||||
#include "nsPSMShimLayer.h"
|
|
||||||
#include "nsSSLIOLayer.h"
|
|
||||||
#include "nsIWebProgressListener.h"
|
|
||||||
#include "nsISSLSocketControl.h"
|
|
||||||
#include "nsIInterfaceRequestor.h"
|
|
||||||
|
|
||||||
static PRDescIdentity nsSSLIOLayerIdentity;
|
|
||||||
static PRIOMethods nsSSLIOLayerMethods;
|
|
||||||
static nsIPSMComponent* gPSMService = nsnull;
|
|
||||||
static PRBool firstTime = PR_TRUE;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class nsPSMSocketInfo : public nsIPSMSocketInfo,
|
|
||||||
public nsISSLSocketControl
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
nsPSMSocketInfo();
|
|
||||||
virtual ~nsPSMSocketInfo();
|
|
||||||
|
|
||||||
NS_DECL_ISUPPORTS
|
|
||||||
NS_DECL_NSITRANSPORTSECURITYINFO
|
|
||||||
NS_DECL_NSIPSMSOCKETINFO
|
|
||||||
NS_DECL_NSISSLSOCKETCONTROL
|
|
||||||
|
|
||||||
// internal functions to psm-glue.
|
|
||||||
nsresult SetSocketPtr(CMSocket *socketPtr);
|
|
||||||
nsresult SetControlPtr(CMT_CONTROL *aControlPtr);
|
|
||||||
nsresult SetFileDescPtr(PRFileDesc *aControlPtr);
|
|
||||||
nsresult SetHostName(const char *aHostName);
|
|
||||||
nsresult SetProxyName(const char *aName);
|
|
||||||
|
|
||||||
nsresult SetHostPort(PRInt32 aPort);
|
|
||||||
nsresult SetProxyPort(PRInt32 aPort);
|
|
||||||
nsresult SetPickledStatus();
|
|
||||||
|
|
||||||
nsresult SetUseTLS(PRBool useTLS);
|
|
||||||
nsresult GetUseTLS(PRBool *useTLS);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
CMT_CONTROL* mControl;
|
|
||||||
CMSocket* mSocket;
|
|
||||||
PRFileDesc* mFd;
|
|
||||||
nsCOMPtr<nsIInterfaceRequestor> mCallbacks;
|
|
||||||
|
|
||||||
nsString mHostName;
|
|
||||||
PRInt32 mHostPort;
|
|
||||||
|
|
||||||
nsString mProxyName;
|
|
||||||
PRInt32 mProxyPort;
|
|
||||||
|
|
||||||
PRBool mForceHandshake;
|
|
||||||
PRBool mUseTLS;
|
|
||||||
|
|
||||||
unsigned char* mPickledStatus;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
static PRStatus PR_CALLBACK
|
|
||||||
nsSSLIOLayerConnect(PRFileDesc *fd, const PRNetAddr *addr, PRIntervalTime timeout)
|
|
||||||
{
|
|
||||||
nsresult result;
|
|
||||||
PRStatus rv = PR_SUCCESS;
|
|
||||||
CMTStatus status = CMTFailure;
|
|
||||||
|
|
||||||
/* Set the error in case of failure. */
|
|
||||||
|
|
||||||
PR_SetError(PR_UNKNOWN_ERROR, status);
|
|
||||||
|
|
||||||
if (!fd || !addr || !fd->secret || !gPSMService)
|
|
||||||
return PR_FAILURE;
|
|
||||||
|
|
||||||
char ipBuffer[PR_NETDB_BUF_SIZE];
|
|
||||||
rv = PR_NetAddrToString(addr, (char*)&ipBuffer, PR_NETDB_BUF_SIZE);
|
|
||||||
if (rv != PR_SUCCESS)
|
|
||||||
return PR_FAILURE;
|
|
||||||
|
|
||||||
if (addr->raw.family == PR_AF_INET6 && PR_IsNetAddrType(addr, PR_IpAddrV4Mapped))
|
|
||||||
{
|
|
||||||
/* Chop off the leading "::ffff:" */
|
|
||||||
strcpy(ipBuffer, ipBuffer + 7);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
CMT_CONTROL *control;
|
|
||||||
result = gPSMService->GetControlConnection(&control);
|
|
||||||
if (result != PR_SUCCESS)
|
|
||||||
return PR_FAILURE;
|
|
||||||
|
|
||||||
CMSocket* cmsock = (CMSocket *)PR_Malloc(sizeof(CMSocket));
|
|
||||||
if (!cmsock)
|
|
||||||
return PR_FAILURE;
|
|
||||||
|
|
||||||
memset(cmsock, 0, sizeof(CMSocket));
|
|
||||||
|
|
||||||
cmsock->fd = fd->lower;
|
|
||||||
cmsock->isUnix = PR_FALSE;
|
|
||||||
|
|
||||||
nsPSMSocketInfo *infoObject = (nsPSMSocketInfo *)fd->secret;
|
|
||||||
|
|
||||||
infoObject->SetControlPtr(control);
|
|
||||||
infoObject->SetSocketPtr(cmsock);
|
|
||||||
|
|
||||||
char* proxyName;
|
|
||||||
char* hostName;
|
|
||||||
PRInt32 proxyPort;
|
|
||||||
PRInt32 hostPort;
|
|
||||||
PRBool forceHandshake;
|
|
||||||
PRBool useTLS;
|
|
||||||
infoObject->GetProxyName(&proxyName);
|
|
||||||
infoObject->GetHostName(&hostName);
|
|
||||||
infoObject->GetProxyPort(&proxyPort);
|
|
||||||
infoObject->GetHostPort(&hostPort);
|
|
||||||
infoObject->GetForceHandshake(&forceHandshake);
|
|
||||||
infoObject->GetUseTLS(&useTLS);
|
|
||||||
|
|
||||||
if (proxyName)
|
|
||||||
{
|
|
||||||
PRInt32 destPort;
|
|
||||||
|
|
||||||
infoObject->GetProxyPort(&destPort);
|
|
||||||
|
|
||||||
status = CMT_OpenSSLProxyConnection(control,
|
|
||||||
cmsock,
|
|
||||||
destPort,
|
|
||||||
// we assume that we were called
|
|
||||||
// with the addr of the proxy host
|
|
||||||
ipBuffer,
|
|
||||||
proxyName);
|
|
||||||
}
|
|
||||||
else if (useTLS)
|
|
||||||
{
|
|
||||||
status = CMT_OpenTLSConnection(control,
|
|
||||||
cmsock,
|
|
||||||
PR_ntohs(addr->inet.port),
|
|
||||||
ipBuffer,
|
|
||||||
(hostName ? hostName : ipBuffer));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
CMBool handshake = forceHandshake ? CM_TRUE : CM_FALSE;
|
|
||||||
// Direct connection
|
|
||||||
status = CMT_OpenSSLConnection(control,
|
|
||||||
cmsock,
|
|
||||||
SSM_REQUEST_SSL_DATA_SSL,
|
|
||||||
PR_ntohs(addr->inet.port),
|
|
||||||
ipBuffer,
|
|
||||||
(hostName ? hostName : ipBuffer),
|
|
||||||
handshake,
|
|
||||||
infoObject);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (hostName) Recycle(hostName);
|
|
||||||
if (proxyName) Recycle(proxyName);
|
|
||||||
|
|
||||||
if (CMTSuccess == status)
|
|
||||||
{
|
|
||||||
PRSocketOptionData sockopt;
|
|
||||||
sockopt.option = PR_SockOpt_Nonblocking;
|
|
||||||
rv = PR_GetSocketOption(fd, &sockopt);
|
|
||||||
|
|
||||||
if (PR_SUCCESS == rv && !sockopt.value.non_blocking) {
|
|
||||||
// this is a nonblocking socket, so we can return success
|
|
||||||
return PR_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
// since our stuff can block, what we want to do is return PR_FAILURE,
|
|
||||||
// but set the nspr ERROR to BLOCK. This will put us into a select
|
|
||||||
// q.
|
|
||||||
PR_SetError(PR_WOULD_BLOCK_ERROR, status);
|
|
||||||
return PR_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return PR_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* CMT_DestroyDataConnection(ctrl, sock); */
|
|
||||||
/* need to strip our layer, pass result to DestroyDataConnection */
|
|
||||||
/* which will clean up the CMT accounting of sock, then call our */
|
|
||||||
/* shim layer to translate back to NSPR */
|
|
||||||
|
|
||||||
static PRStatus PR_CALLBACK
|
|
||||||
nsSSLIOLayerClose(PRFileDesc *fd)
|
|
||||||
{
|
|
||||||
nsPSMSocketInfo *infoObject = (nsPSMSocketInfo *)fd->secret;
|
|
||||||
PRDescIdentity id = PR_GetLayersIdentity(fd);
|
|
||||||
|
|
||||||
if (infoObject && id == nsSSLIOLayerIdentity)
|
|
||||||
{
|
|
||||||
CMInt32 errorCode = PR_FAILURE;
|
|
||||||
CMT_CONTROL* control;
|
|
||||||
CMSocket* sock;
|
|
||||||
|
|
||||||
PR_Shutdown(fd, PR_SHUTDOWN_BOTH);
|
|
||||||
|
|
||||||
infoObject->GetControlPtr(&control);
|
|
||||||
infoObject->GetSocketPtr(&sock);
|
|
||||||
/*
|
|
||||||
* was infoObject->SetPickledStatus();
|
|
||||||
* The PSM code decrements the refcount on the SSL state
|
|
||||||
* whenever it is asked for the pickled status. Until we
|
|
||||||
* get a PSM protocol change implemented, we have to avoid
|
|
||||||
* asking for the pickled status twice on the same connection.
|
|
||||||
* --jgmyers
|
|
||||||
*/
|
|
||||||
infoObject->GetPickledStatus(nsnull);
|
|
||||||
|
|
||||||
CMT_GetSSLDataErrorCode(control, sock, &errorCode);
|
|
||||||
CMT_DestroyDataConnection(control, sock);
|
|
||||||
NS_RELEASE(infoObject); // if someone is interested in us, the better have an addref.
|
|
||||||
fd->identity = PR_INVALID_IO_LAYER;
|
|
||||||
|
|
||||||
return (PRStatus)errorCode;
|
|
||||||
}
|
|
||||||
|
|
||||||
return PR_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PRInt32 PR_CALLBACK
|
|
||||||
nsSSLIOLayerRead( PRFileDesc *fd, void *buf, PRInt32 amount)
|
|
||||||
{
|
|
||||||
if (!fd)
|
|
||||||
return PR_FAILURE;
|
|
||||||
|
|
||||||
PRInt32 result = PR_Recv(fd, buf, amount, 0, PR_INTERVAL_MIN);
|
|
||||||
|
|
||||||
if (result > 0)
|
|
||||||
return result;
|
|
||||||
|
|
||||||
if (result == -1)
|
|
||||||
{
|
|
||||||
PRErrorCode code = PR_GetError();
|
|
||||||
|
|
||||||
if (code == PR_IO_TIMEOUT_ERROR )
|
|
||||||
PR_SetError(PR_WOULD_BLOCK_ERROR, PR_WOULD_BLOCK_ERROR);
|
|
||||||
return PR_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (result == 0)
|
|
||||||
{
|
|
||||||
nsPSMSocketInfo *infoObject = (nsPSMSocketInfo *)fd->secret;
|
|
||||||
PRDescIdentity id = PR_GetLayersIdentity(fd);
|
|
||||||
|
|
||||||
if (infoObject && id == nsSSLIOLayerIdentity)
|
|
||||||
{
|
|
||||||
CMInt32 errorCode = PR_FAILURE;
|
|
||||||
|
|
||||||
CMT_CONTROL* control;
|
|
||||||
CMSocket* sock;
|
|
||||||
|
|
||||||
infoObject->GetControlPtr(&control);
|
|
||||||
infoObject->GetSocketPtr(&sock);
|
|
||||||
|
|
||||||
CMT_GetSSLDataErrorCode(control, sock, &errorCode);
|
|
||||||
|
|
||||||
if (errorCode == PR_IO_TIMEOUT_ERROR)
|
|
||||||
{
|
|
||||||
PR_SetError(PR_WOULD_BLOCK_ERROR, PR_WOULD_BLOCK_ERROR);
|
|
||||||
return PR_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
PR_SetError(0, 0);
|
|
||||||
return errorCode;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PRInt32 PR_CALLBACK
|
|
||||||
nsSSLIOLayerWrite( PRFileDesc *fd, const void *buf, PRInt32 amount)
|
|
||||||
{
|
|
||||||
if (!fd)
|
|
||||||
return PR_FAILURE;
|
|
||||||
|
|
||||||
PRInt32 result = PR_Send(fd, buf, amount, 0, PR_INTERVAL_MIN);
|
|
||||||
|
|
||||||
if (result > 0)
|
|
||||||
return result;
|
|
||||||
|
|
||||||
if (result == -1)
|
|
||||||
{
|
|
||||||
PRErrorCode code = PR_GetError();
|
|
||||||
|
|
||||||
if (code == PR_IO_TIMEOUT_ERROR )
|
|
||||||
PR_SetError(PR_WOULD_BLOCK_ERROR, PR_WOULD_BLOCK_ERROR);
|
|
||||||
return PR_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (result == 0)
|
|
||||||
{
|
|
||||||
nsPSMSocketInfo *infoObject = (nsPSMSocketInfo *)fd->secret;
|
|
||||||
PRDescIdentity id = PR_GetLayersIdentity(fd);
|
|
||||||
|
|
||||||
if (infoObject && id == nsSSLIOLayerIdentity)
|
|
||||||
{
|
|
||||||
CMInt32 errorCode = PR_FAILURE;
|
|
||||||
CMT_CONTROL* control;
|
|
||||||
CMSocket* sock;
|
|
||||||
|
|
||||||
infoObject->GetControlPtr(&control);
|
|
||||||
infoObject->GetSocketPtr(&sock);
|
|
||||||
|
|
||||||
CMT_GetSSLDataErrorCode(control, sock, &errorCode);
|
|
||||||
PR_SetError(0, 0);
|
|
||||||
return errorCode;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
nsPSMSocketInfo::nsPSMSocketInfo()
|
|
||||||
{
|
|
||||||
NS_INIT_REFCNT();
|
|
||||||
mControl = nsnull;
|
|
||||||
mSocket = nsnull;
|
|
||||||
mPickledStatus = nsnull;
|
|
||||||
mForceHandshake = PR_FALSE;
|
|
||||||
mUseTLS = PR_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
nsPSMSocketInfo::~nsPSMSocketInfo()
|
|
||||||
{
|
|
||||||
PR_FREEIF(mPickledStatus);
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMPL_THREADSAFE_ISUPPORTS3(nsPSMSocketInfo, nsITransportSecurityInfo,
|
|
||||||
nsIPSMSocketInfo, nsISSLSocketControl);
|
|
||||||
|
|
||||||
// if the connection was via a proxy, we need to have the
|
|
||||||
// ssl layer "step up" to take an active role in the connection
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsPSMSocketInfo::ProxyStepUp()
|
|
||||||
{
|
|
||||||
nsCAutoString hostName;
|
|
||||||
hostName.AssignWithConversion(mHostName);
|
|
||||||
|
|
||||||
return CMT_ProxyStepUp(mControl, mSocket, this, hostName);
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsPSMSocketInfo::TLSStepUp()
|
|
||||||
{
|
|
||||||
return CMT_TLSStepUp(mControl, mSocket, this);
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsPSMSocketInfo::GetControlPtr(CMT_CONTROL * *aControlPtr)
|
|
||||||
{
|
|
||||||
*aControlPtr = mControl;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
nsresult
|
|
||||||
nsPSMSocketInfo::SetControlPtr(CMT_CONTROL *aControlPtr)
|
|
||||||
{
|
|
||||||
mControl = aControlPtr;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsPSMSocketInfo::GetSocketPtr(CMSocket * *socketPtr)
|
|
||||||
{
|
|
||||||
*socketPtr = mSocket;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
nsresult
|
|
||||||
nsPSMSocketInfo::SetSocketPtr(CMSocket *socketPtr)
|
|
||||||
{
|
|
||||||
mSocket = socketPtr;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsPSMSocketInfo::GetFileDescPtr(PRFileDesc * *aFilePtr)
|
|
||||||
{
|
|
||||||
*aFilePtr = mFd;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
nsresult
|
|
||||||
nsPSMSocketInfo::SetFileDescPtr(PRFileDesc *aFilePtr)
|
|
||||||
{
|
|
||||||
mFd = aFilePtr;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsPSMSocketInfo::GetHostName(char * *aHostName)
|
|
||||||
{
|
|
||||||
if (mHostName.IsEmpty())
|
|
||||||
*aHostName = nsnull;
|
|
||||||
else
|
|
||||||
*aHostName = mHostName.ToNewCString();
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
nsresult
|
|
||||||
nsPSMSocketInfo::SetHostName(const char *aHostName)
|
|
||||||
{
|
|
||||||
mHostName.AssignWithConversion(aHostName);
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsPSMSocketInfo::GetHostPort(PRInt32 *aPort)
|
|
||||||
{
|
|
||||||
*aPort = mHostPort;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
nsresult
|
|
||||||
nsPSMSocketInfo::SetHostPort(PRInt32 aPort)
|
|
||||||
{
|
|
||||||
mHostPort = aPort;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsPSMSocketInfo::GetProxyName(char * *aName)
|
|
||||||
{
|
|
||||||
if (mProxyName.IsEmpty())
|
|
||||||
*aName = nsnull;
|
|
||||||
else
|
|
||||||
*aName = mProxyName.ToNewCString();
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
nsresult
|
|
||||||
nsPSMSocketInfo::SetProxyName(const char *aName)
|
|
||||||
{
|
|
||||||
mProxyName.AssignWithConversion(aName);
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsPSMSocketInfo::GetProxyPort(PRInt32 *aPort)
|
|
||||||
{
|
|
||||||
*aPort = mProxyPort;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
nsresult
|
|
||||||
nsPSMSocketInfo::SetProxyPort(PRInt32 aPort)
|
|
||||||
{
|
|
||||||
mProxyPort = aPort;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsPSMSocketInfo::GetForceHandshake(PRBool *forceHandshake)
|
|
||||||
{
|
|
||||||
*forceHandshake = mForceHandshake;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsPSMSocketInfo::SetForceHandshake(PRBool forceHandshake)
|
|
||||||
{
|
|
||||||
mForceHandshake = forceHandshake;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
nsresult
|
|
||||||
nsPSMSocketInfo::GetUseTLS(PRBool *aResult)
|
|
||||||
{
|
|
||||||
*aResult = mUseTLS;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
nsresult
|
|
||||||
nsPSMSocketInfo::SetUseTLS(PRBool useTLS)
|
|
||||||
{
|
|
||||||
mUseTLS = useTLS;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
nsresult
|
|
||||||
nsPSMSocketInfo::GetShortSecurityDescription(PRUnichar** aText)
|
|
||||||
{
|
|
||||||
return NS_ERROR_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
nsresult
|
|
||||||
nsPSMSocketInfo::SetPickledStatus()
|
|
||||||
{
|
|
||||||
PR_FREEIF(mPickledStatus);
|
|
||||||
|
|
||||||
long level;
|
|
||||||
CMTItem pickledStatus = {0, nsnull, 0};
|
|
||||||
unsigned char* ret = nsnull;
|
|
||||||
|
|
||||||
if (NS_SUCCEEDED(CMT_GetSSLSocketStatus(mControl, mSocket, &pickledStatus, &level)))
|
|
||||||
{
|
|
||||||
ret = (unsigned char*) PR_Malloc( (SSMSTRING_PADDED_LENGTH(pickledStatus.len) + sizeof(int)) );
|
|
||||||
if (ret)
|
|
||||||
{
|
|
||||||
*(int*)ret = pickledStatus.len;
|
|
||||||
memcpy(ret+sizeof(int), pickledStatus.data, *(int*)ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
PR_FREEIF(pickledStatus.data);
|
|
||||||
mPickledStatus = ret;
|
|
||||||
}
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsPSMSocketInfo::GetPickledStatus(char * *pickledStatusString)
|
|
||||||
{
|
|
||||||
if (!mPickledStatus)
|
|
||||||
SetPickledStatus();
|
|
||||||
|
|
||||||
if (mPickledStatus)
|
|
||||||
{
|
|
||||||
if (pickledStatusString) {
|
|
||||||
PRInt32 len = *(int*)mPickledStatus + sizeof(int);
|
|
||||||
char *out = (char *)nsMemory::Alloc(len);
|
|
||||||
memcpy(out, mPickledStatus, len);
|
|
||||||
*pickledStatusString = out;
|
|
||||||
}
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
if (pickledStatusString) {
|
|
||||||
*pickledStatusString = nsnull;
|
|
||||||
}
|
|
||||||
return NS_ERROR_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsPSMSocketInfo::GetSecurityState(PRInt32 *aSecurityState)
|
|
||||||
{
|
|
||||||
if (!mPickledStatus)
|
|
||||||
SetPickledStatus();
|
|
||||||
|
|
||||||
*aSecurityState = mPickledStatus ? (PRInt32) nsIWebProgressListener::STATE_IS_SECURE
|
|
||||||
: (PRInt32) nsIWebProgressListener::STATE_IS_BROKEN;
|
|
||||||
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsPSMSocketInfo::GetNotificationCallbacks(nsIInterfaceRequestor** aCallbacks)
|
|
||||||
{
|
|
||||||
*aCallbacks = mCallbacks;
|
|
||||||
NS_IF_ADDREF(*aCallbacks);
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsPSMSocketInfo::SetNotificationCallbacks(nsIInterfaceRequestor* aCallbacks)
|
|
||||||
{
|
|
||||||
mCallbacks = aCallbacks;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
nsresult
|
|
||||||
nsSSLIOLayerNewSocket( const char *host,
|
|
||||||
PRInt32 port,
|
|
||||||
const char *proxyHost,
|
|
||||||
PRInt32 proxyPort,
|
|
||||||
PRFileDesc **fd,
|
|
||||||
nsISupports** info,
|
|
||||||
PRBool useTLS)
|
|
||||||
{
|
|
||||||
if (firstTime)
|
|
||||||
{
|
|
||||||
nsSSLIOLayerIdentity = PR_GetUniqueIdentity("Cartman layer");
|
|
||||||
nsSSLIOLayerMethods = *PR_GetDefaultIOMethods();
|
|
||||||
|
|
||||||
nsSSLIOLayerMethods.connect = nsSSLIOLayerConnect;
|
|
||||||
nsSSLIOLayerMethods.close = nsSSLIOLayerClose;
|
|
||||||
nsSSLIOLayerMethods.read = nsSSLIOLayerRead;
|
|
||||||
nsSSLIOLayerMethods.write = nsSSLIOLayerWrite;
|
|
||||||
|
|
||||||
|
|
||||||
nsresult result = nsServiceManager::GetService( PSM_COMPONENT_CONTRACTID,
|
|
||||||
NS_GET_IID(nsIPSMComponent),
|
|
||||||
(nsISupports**)&gPSMService);
|
|
||||||
if (NS_FAILED(result))
|
|
||||||
return PR_FAILURE;
|
|
||||||
|
|
||||||
firstTime = PR_FALSE;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
PRFileDesc * sock;
|
|
||||||
PRFileDesc * layer;
|
|
||||||
PRStatus rv;
|
|
||||||
|
|
||||||
/* Get a normal NSPR socket */
|
|
||||||
sock = PR_NewTCPSocket();
|
|
||||||
if (! sock) return NS_ERROR_OUT_OF_MEMORY;
|
|
||||||
|
|
||||||
/* disable Nagle algorithm delay for control sockets */
|
|
||||||
PRSocketOptionData sockopt;
|
|
||||||
sockopt.option = PR_SockOpt_NoDelay;
|
|
||||||
sockopt.value.no_delay = PR_TRUE;
|
|
||||||
rv = PR_SetSocketOption(sock, &sockopt);
|
|
||||||
PR_ASSERT(PR_SUCCESS == rv);
|
|
||||||
|
|
||||||
|
|
||||||
layer = PR_CreateIOLayerStub(nsSSLIOLayerIdentity, &nsSSLIOLayerMethods);
|
|
||||||
if (! layer)
|
|
||||||
{
|
|
||||||
PR_Close(sock);
|
|
||||||
return NS_ERROR_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
nsPSMSocketInfo * infoObject = new nsPSMSocketInfo();
|
|
||||||
if (!infoObject)
|
|
||||||
{
|
|
||||||
PR_Close(sock);
|
|
||||||
// clean up IOLayerStub.
|
|
||||||
PR_DELETE(layer);
|
|
||||||
return NS_ERROR_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_ADDREF(infoObject);
|
|
||||||
infoObject->SetHostName(host);
|
|
||||||
infoObject->SetHostPort(port);
|
|
||||||
infoObject->SetProxyName(proxyHost);
|
|
||||||
infoObject->SetProxyPort(proxyPort);
|
|
||||||
infoObject->SetUseTLS(useTLS);
|
|
||||||
|
|
||||||
layer->secret = (PRFilePrivate*) infoObject;
|
|
||||||
rv = PR_PushIOLayer(sock, PR_GetLayersIdentity(sock), layer);
|
|
||||||
|
|
||||||
if (NS_FAILED(rv))
|
|
||||||
{
|
|
||||||
PR_Close(sock);
|
|
||||||
NS_RELEASE(infoObject);
|
|
||||||
PR_DELETE(layer);
|
|
||||||
return NS_ERROR_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
*fd = sock;
|
|
||||||
infoObject->QueryInterface(NS_GET_IID(nsISupports), (void**) info);
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
nsresult
|
|
||||||
nsSSLIOLayerAddToSocket( const char *host,
|
|
||||||
PRInt32 port,
|
|
||||||
const char *proxyHost,
|
|
||||||
PRInt32 proxyPort,
|
|
||||||
PRFileDesc *fd,
|
|
||||||
nsISupports** info,
|
|
||||||
PRBool useTLS)
|
|
||||||
{
|
|
||||||
if (firstTime)
|
|
||||||
{
|
|
||||||
nsSSLIOLayerIdentity = PR_GetUniqueIdentity("Cartman layer");
|
|
||||||
nsSSLIOLayerMethods = *PR_GetDefaultIOMethods();
|
|
||||||
|
|
||||||
nsSSLIOLayerMethods.connect = nsSSLIOLayerConnect;
|
|
||||||
nsSSLIOLayerMethods.close = nsSSLIOLayerClose;
|
|
||||||
nsSSLIOLayerMethods.read = nsSSLIOLayerRead;
|
|
||||||
nsSSLIOLayerMethods.write = nsSSLIOLayerWrite;
|
|
||||||
|
|
||||||
|
|
||||||
nsresult result = nsServiceManager::GetService( PSM_COMPONENT_CONTRACTID,
|
|
||||||
NS_GET_IID(nsIPSMComponent),
|
|
||||||
(nsISupports**)&gPSMService);
|
|
||||||
if (NS_FAILED(result))
|
|
||||||
return PR_FAILURE;
|
|
||||||
|
|
||||||
firstTime = PR_FALSE;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
PRFileDesc * layer;
|
|
||||||
PRStatus rv;
|
|
||||||
|
|
||||||
/* disable Nagle algorithm delay for control sockets */
|
|
||||||
PRSocketOptionData sockopt;
|
|
||||||
sockopt.option = PR_SockOpt_NoDelay;
|
|
||||||
sockopt.value.no_delay = PR_TRUE;
|
|
||||||
rv = PR_SetSocketOption(fd, &sockopt);
|
|
||||||
PR_ASSERT(PR_SUCCESS == rv);
|
|
||||||
|
|
||||||
|
|
||||||
layer = PR_CreateIOLayerStub(nsSSLIOLayerIdentity, &nsSSLIOLayerMethods);
|
|
||||||
if (! layer)
|
|
||||||
{
|
|
||||||
return NS_ERROR_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
nsPSMSocketInfo * infoObject = new nsPSMSocketInfo();
|
|
||||||
if (!infoObject)
|
|
||||||
{
|
|
||||||
// clean up IOLayerStub.
|
|
||||||
PR_DELETE(layer);
|
|
||||||
return NS_ERROR_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_ADDREF(infoObject);
|
|
||||||
infoObject->SetHostName(host);
|
|
||||||
infoObject->SetHostPort(port);
|
|
||||||
infoObject->SetProxyName(proxyHost);
|
|
||||||
infoObject->SetProxyPort(proxyPort);
|
|
||||||
infoObject->SetUseTLS(useTLS);
|
|
||||||
|
|
||||||
layer->secret = (PRFilePrivate*) infoObject;
|
|
||||||
rv = PR_PushIOLayer(fd, PR_GetLayersIdentity(fd), layer);
|
|
||||||
|
|
||||||
if (NS_FAILED(rv))
|
|
||||||
{
|
|
||||||
NS_RELEASE(infoObject);
|
|
||||||
PR_DELETE(layer);
|
|
||||||
return rv;
|
|
||||||
}
|
|
||||||
|
|
||||||
infoObject->QueryInterface(NS_GET_IID(nsISupports), (void**) info);
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
|
@ -2515,7 +2515,7 @@ nsFontMetricsGTK::SearchNode(nsFontNode* aNode, PRUnichar aChar)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
GetFontNames(char* aPattern, nsFontNodeArray* aNodes)
|
GetFontNames(const char* aPattern, nsFontNodeArray* aNodes)
|
||||||
{
|
{
|
||||||
#ifdef NS_FONT_DEBUG_CALL_TRACE
|
#ifdef NS_FONT_DEBUG_CALL_TRACE
|
||||||
if (gDebug & NS_FONT_DEBUG_CALL_TRACE) {
|
if (gDebug & NS_FONT_DEBUG_CALL_TRACE) {
|
||||||
|
@ -2873,7 +2873,7 @@ nsFontMetricsGTK::TryNode(nsCString* aName, PRUnichar aChar)
|
||||||
hyphen = pattern.FindChar('-', PR_FALSE, hyphen + 1);
|
hyphen = pattern.FindChar('-', PR_FALSE, hyphen + 1);
|
||||||
pattern.Insert("-*-*-*-*-*-*-*-*-*-*", hyphen);
|
pattern.Insert("-*-*-*-*-*-*-*-*-*-*", hyphen);
|
||||||
nsFontNodeArray nodes;
|
nsFontNodeArray nodes;
|
||||||
GetFontNames(pattern, &nodes);
|
GetFontNames(pattern.get(), &nodes);
|
||||||
if (nodes.Count() > 0) {
|
if (nodes.Count() > 0) {
|
||||||
node = nodes.GetElement(0);
|
node = nodes.GetElement(0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -102,7 +102,7 @@ NS_IMPL_ISUPPORTS1(nsAddbookUrl, nsIURI)
|
||||||
// addbook:add?vcard=begin%3Avcard%0Afn%3ARichard%20Pizzarro%0Aemail%3Binternet%3Arhp%40netscape.com%0Aend%3Avcard%0A
|
// addbook:add?vcard=begin%3Avcard%0Afn%3ARichard%20Pizzarro%0Aemail%3Binternet%3Arhp%40netscape.com%0Aend%3Avcard%0A
|
||||||
//
|
//
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsAddbookUrl::CrackAddURL(char *searchPart)
|
nsAddbookUrl::CrackAddURL(const char *searchPart)
|
||||||
{
|
{
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
@ -115,12 +115,12 @@ nsAddbookUrl::CrackAddURL(char *searchPart)
|
||||||
// addbook:printall?email=rhp@netscape.com&folder=Netscape%20Address%20Book
|
// addbook:printall?email=rhp@netscape.com&folder=Netscape%20Address%20Book
|
||||||
//
|
//
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
nsAddbookUrl::CrackPrintURL(char *searchPart, PRInt32 aOperation)
|
nsAddbookUrl::CrackPrintURL(const char *searchPart, PRInt32 aOperation)
|
||||||
{
|
{
|
||||||
nsCString emailAddr;
|
nsCString emailAddr;
|
||||||
nsCString folderName;
|
nsCString folderName;
|
||||||
|
|
||||||
char *rest = searchPart;
|
char *rest = NS_CONST_CAST(char*, searchPart);
|
||||||
|
|
||||||
// okay, first, free up all of our old search part state.....
|
// okay, first, free up all of our old search part state.....
|
||||||
CleanupAddbookState();
|
CleanupAddbookState();
|
||||||
|
@ -166,13 +166,13 @@ nsAddbookUrl::CrackPrintURL(char *searchPart, PRInt32 aOperation)
|
||||||
|
|
||||||
if (!emailAddr.IsEmpty())
|
if (!emailAddr.IsEmpty())
|
||||||
{
|
{
|
||||||
nsUnescape(emailAddr);
|
nsUnescape(NS_CONST_CAST(char*, emailAddr.get()));
|
||||||
mAbCardProperty->SetCardValue(kPriEmailColumn, NS_ConvertASCIItoUCS2(emailAddr).GetUnicode());
|
mAbCardProperty->SetCardValue(kPriEmailColumn, NS_ConvertASCIItoUCS2(emailAddr).GetUnicode());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!folderName.IsEmpty())
|
if (!folderName.IsEmpty())
|
||||||
{
|
{
|
||||||
nsUnescape(folderName);
|
nsUnescape(NS_CONST_CAST(char*, folderName.get()));
|
||||||
mAbCardProperty->SetCardValue(kWorkAddressBook, NS_ConvertASCIItoUCS2(folderName).GetUnicode());
|
mAbCardProperty->SetCardValue(kWorkAddressBook, NS_ConvertASCIItoUCS2(folderName).GetUnicode());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -256,7 +256,7 @@ nsresult nsAddbookUrl::ParseUrl()
|
||||||
}
|
}
|
||||||
else if (!mOperationPart.IsEmpty())
|
else if (!mOperationPart.IsEmpty())
|
||||||
{
|
{
|
||||||
nsUnescape(mOperationPart);
|
nsUnescape(NS_CONST_CAST(char*, mOperationPart.get()));
|
||||||
}
|
}
|
||||||
|
|
||||||
mOperationPart.ToLowerCase();
|
mOperationPart.ToLowerCase();
|
||||||
|
@ -264,17 +264,17 @@ nsresult nsAddbookUrl::ParseUrl()
|
||||||
if (!nsCRT::strcmp(mOperationPart, "printone"))
|
if (!nsCRT::strcmp(mOperationPart, "printone"))
|
||||||
{
|
{
|
||||||
mOperationType = nsIAddbookUrlOperation::PrintIndividual;
|
mOperationType = nsIAddbookUrlOperation::PrintIndividual;
|
||||||
rv = CrackPrintURL(searchPart, mOperationType);
|
rv = CrackPrintURL(searchPart.get(), mOperationType);
|
||||||
}
|
}
|
||||||
else if (!nsCRT::strcmp(mOperationPart, "printall"))
|
else if (!nsCRT::strcmp(mOperationPart, "printall"))
|
||||||
{
|
{
|
||||||
mOperationType = nsIAddbookUrlOperation::PrintAddressBook;
|
mOperationType = nsIAddbookUrlOperation::PrintAddressBook;
|
||||||
rv = CrackPrintURL(searchPart, mOperationType);
|
rv = CrackPrintURL(searchPart.get(), mOperationType);
|
||||||
}
|
}
|
||||||
else if (!nsCRT::strcmp(mOperationPart, "add"))
|
else if (!nsCRT::strcmp(mOperationPart, "add"))
|
||||||
{
|
{
|
||||||
mOperationType = nsIAddbookUrlOperation::AddToAddressBook;
|
mOperationType = nsIAddbookUrlOperation::AddToAddressBook;
|
||||||
rv = CrackAddURL(searchPart);
|
rv = CrackAddURL(searchPart.get());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
mOperationType = nsIAddbookUrlOperation::InvalidUrl;
|
mOperationType = nsIAddbookUrlOperation::InvalidUrl;
|
||||||
|
|
|
@ -48,8 +48,8 @@ protected:
|
||||||
|
|
||||||
nsresult ParseUrl(); // This gets the ball rolling...
|
nsresult ParseUrl(); // This gets the ball rolling...
|
||||||
|
|
||||||
NS_METHOD CrackAddURL(char *searchPart);
|
NS_METHOD CrackAddURL(const char *searchPart);
|
||||||
NS_METHOD CrackPrintURL(char *searchPart, PRInt32 aOperation);
|
NS_METHOD CrackPrintURL(const char *searchPart, PRInt32 aOperation);
|
||||||
NS_METHOD GetAbCardProperty(nsAbCardProperty **aAbCardProp);
|
NS_METHOD GetAbCardProperty(nsAbCardProperty **aAbCardProp);
|
||||||
|
|
||||||
nsCString mOperationPart; // string name of operation requested
|
nsCString mOperationPart; // string name of operation requested
|
||||||
|
|
|
@ -1323,7 +1323,7 @@ NS_IMETHODIMP QuotingOutputStreamListener::OnStopRequest(nsIRequest *request, ns
|
||||||
addressToBeRemoved += NS_CONST_CAST(char*, (const char *)email);
|
addressToBeRemoved += NS_CONST_CAST(char*, (const char *)email);
|
||||||
}
|
}
|
||||||
|
|
||||||
rv= RemoveDuplicateAddresses(_compFields->GetCc(), (char *)addressToBeRemoved, PR_TRUE, &resultStr);
|
rv= RemoveDuplicateAddresses(_compFields->GetCc(), addressToBeRemoved.get(), PR_TRUE, &resultStr);
|
||||||
if (NS_SUCCEEDED(rv))
|
if (NS_SUCCEEDED(rv))
|
||||||
{
|
{
|
||||||
_compFields->SetCc(resultStr);
|
_compFields->SetCc(resultStr);
|
||||||
|
@ -2212,7 +2212,7 @@ nsresult nsMsgCompose::NotifyStateListeners(TStateListenerNotification aNotifica
|
||||||
nsresult nsMsgCompose::AttachmentPrettyName(const char* url, PRUnichar** _retval)
|
nsresult nsMsgCompose::AttachmentPrettyName(const char* url, PRUnichar** _retval)
|
||||||
{
|
{
|
||||||
nsCAutoString unescapeURL(url);
|
nsCAutoString unescapeURL(url);
|
||||||
nsUnescape(unescapeURL);
|
nsUnescape(NS_CONST_CAST(char*, unescapeURL.get()));
|
||||||
if (unescapeURL.IsEmpty())
|
if (unescapeURL.IsEmpty())
|
||||||
{
|
{
|
||||||
nsAutoString unicodeUrl;
|
nsAutoString unicodeUrl;
|
||||||
|
|
|
@ -170,21 +170,21 @@ nsresult nsMailtoUrl::ParseMailtoUrl(char * searchPart)
|
||||||
|
|
||||||
// Now unescape any fields that need escaped...
|
// Now unescape any fields that need escaped...
|
||||||
if (!m_toPart.IsEmpty())
|
if (!m_toPart.IsEmpty())
|
||||||
nsUnescape(m_toPart);
|
nsUnescape(NS_CONST_CAST(char*, m_toPart.get()));
|
||||||
if (!m_ccPart.IsEmpty())
|
if (!m_ccPart.IsEmpty())
|
||||||
nsUnescape(m_ccPart);
|
nsUnescape(NS_CONST_CAST(char*, m_ccPart.get()));
|
||||||
if (!m_subjectPart.IsEmpty())
|
if (!m_subjectPart.IsEmpty())
|
||||||
nsUnescape(m_subjectPart);
|
nsUnescape(NS_CONST_CAST(char*, m_subjectPart.get()));
|
||||||
if (!m_newsgroupPart.IsEmpty())
|
if (!m_newsgroupPart.IsEmpty())
|
||||||
nsUnescape(m_newsgroupPart);
|
nsUnescape(NS_CONST_CAST(char*, m_newsgroupPart.get()));
|
||||||
if (!m_referencePart.IsEmpty())
|
if (!m_referencePart.IsEmpty())
|
||||||
nsUnescape(m_referencePart);
|
nsUnescape(NS_CONST_CAST(char*, m_referencePart.get()));
|
||||||
if (!m_attachmentPart.IsEmpty())
|
if (!m_attachmentPart.IsEmpty())
|
||||||
nsUnescape(m_attachmentPart);
|
nsUnescape(NS_CONST_CAST(char*, m_attachmentPart.get()));
|
||||||
if (!m_bodyPart.IsEmpty())
|
if (!m_bodyPart.IsEmpty())
|
||||||
nsUnescape(m_bodyPart);
|
nsUnescape(NS_CONST_CAST(char*, m_bodyPart.get()));
|
||||||
if (!m_newsHostPart.IsEmpty())
|
if (!m_newsHostPart.IsEmpty())
|
||||||
nsUnescape(m_newsHostPart);
|
nsUnescape(NS_CONST_CAST(char*, m_newsHostPart.get()));
|
||||||
|
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
@ -233,7 +233,7 @@ nsresult nsMailtoUrl::ParseUrl()
|
||||||
PRUint32 numExtraChars = m_toPart.Mid(searchPart, startOfSearchPart, -1);
|
PRUint32 numExtraChars = m_toPart.Mid(searchPart, startOfSearchPart, -1);
|
||||||
if (!searchPart.IsEmpty())
|
if (!searchPart.IsEmpty())
|
||||||
{
|
{
|
||||||
ParseMailtoUrl(searchPart);
|
ParseMailtoUrl(NS_CONST_CAST(char*, searchPart.get()));
|
||||||
// now we need to strip off the search part from the
|
// now we need to strip off the search part from the
|
||||||
// to part....
|
// to part....
|
||||||
m_toPart.Cut(startOfSearchPart, numExtraChars);
|
m_toPart.Cut(startOfSearchPart, numExtraChars);
|
||||||
|
@ -241,7 +241,7 @@ nsresult nsMailtoUrl::ParseUrl()
|
||||||
}
|
}
|
||||||
else if (!m_toPart.IsEmpty())
|
else if (!m_toPart.IsEmpty())
|
||||||
{
|
{
|
||||||
nsUnescape(m_toPart);
|
nsUnescape(NS_CONST_CAST(char*, m_toPart.get()));
|
||||||
}
|
}
|
||||||
|
|
||||||
return rv;
|
return rv;
|
||||||
|
@ -453,8 +453,8 @@ nsSmtpUrl::SetRecipients(const char * aRecipientsList)
|
||||||
NS_ENSURE_ARG(aRecipientsList);
|
NS_ENSURE_ARG(aRecipientsList);
|
||||||
m_toPart = aRecipientsList;
|
m_toPart = aRecipientsList;
|
||||||
if (!m_toPart.IsEmpty())
|
if (!m_toPart.IsEmpty())
|
||||||
nsUnescape(m_toPart);
|
nsUnescape(NS_CONST_CAST(char*, m_toPart.get()));
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2878,8 +2878,8 @@ NS_IMETHODIMP nsImapService::NewURI(const char *aSpec, nsIURI *aBaseURI, nsIURI
|
||||||
// now extract lots of fun information...
|
// now extract lots of fun information...
|
||||||
nsCOMPtr<nsIMsgMailNewsUrl> mailnewsUrl = do_QueryInterface(aImapUrl);
|
nsCOMPtr<nsIMsgMailNewsUrl> mailnewsUrl = do_QueryInterface(aImapUrl);
|
||||||
nsCAutoString unescapedSpec(aSpec);
|
nsCAutoString unescapedSpec(aSpec);
|
||||||
nsUnescape(unescapedSpec);
|
nsUnescape(NS_CONST_CAST(char*, unescapedSpec.get()));
|
||||||
mailnewsUrl->SetSpec((char *) unescapedSpec); // set the url spec...
|
mailnewsUrl->SetSpec(unescapedSpec.get()); // set the url spec...
|
||||||
|
|
||||||
nsXPIDLCString userName;
|
nsXPIDLCString userName;
|
||||||
nsXPIDLCString hostName;
|
nsXPIDLCString hostName;
|
||||||
|
|
|
@ -1201,7 +1201,7 @@ nsPop3Protocol::GurlResponse()
|
||||||
/// the xpidl file which is preventing SetMailAccountURL from taking
|
/// the xpidl file which is preventing SetMailAccountURL from taking
|
||||||
// const char *. When that is fixed, we can remove this cast.
|
// const char *. When that is fixed, we can remove this cast.
|
||||||
if (m_nsIPop3Sink)
|
if (m_nsIPop3Sink)
|
||||||
m_nsIPop3Sink->SetMailAccountURL((char *) m_commandResponse);
|
m_nsIPop3Sink->SetMailAccountURL(m_commandResponse.get());
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
m_pop3ConData->capability_flags &= ~POP3_HAS_GURL;
|
m_pop3ConData->capability_flags &= ~POP3_HAS_GURL;
|
||||||
|
|
|
@ -257,7 +257,7 @@ nsPop3Sink::IncorporateBegin(const char* uidlString,
|
||||||
nsCAutoString uidlCString("X-UIDL: ");
|
nsCAutoString uidlCString("X-UIDL: ");
|
||||||
uidlCString += uidlString;
|
uidlCString += uidlString;
|
||||||
uidlCString += MSG_LINEBREAK;
|
uidlCString += MSG_LINEBREAK;
|
||||||
WriteLineToMailbox(uidlCString);
|
WriteLineToMailbox(NS_CONST_CAST(char*, uidlCString.get()));
|
||||||
}
|
}
|
||||||
// WriteLineToMailbox("X-Mozilla-Status: 8000" MSG_LINEBREAK);
|
// WriteLineToMailbox("X-Mozilla-Status: 8000" MSG_LINEBREAK);
|
||||||
char *statusLine = PR_smprintf(X_MOZILLA_STATUS_FORMAT MSG_LINEBREAK, flags);
|
char *statusLine = PR_smprintf(X_MOZILLA_STATUS_FORMAT MSG_LINEBREAK, flags);
|
||||||
|
|
|
@ -1720,7 +1720,7 @@ mime_decompose_file_init_fn ( void *stream_closure, MimeHeaders *headers )
|
||||||
newAttachName.Append(".tmp");
|
newAttachName.Append(".tmp");
|
||||||
}
|
}
|
||||||
|
|
||||||
tmpSpec = nsMsgCreateTempFileSpec(newAttachName);
|
tmpSpec = nsMsgCreateTempFileSpec(NS_CONST_CAST(char*, newAttachName.get()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// This needs to be done so the attachment structure has a handle
|
// This needs to be done so the attachment structure has a handle
|
||||||
|
|
|
@ -178,7 +178,7 @@ MimeInlineTextPlainFlowed_parse_begin (MimeObject *obj)
|
||||||
openingDiv += '"';
|
openingDiv += '"';
|
||||||
}
|
}
|
||||||
openingDiv += ">";
|
openingDiv += ">";
|
||||||
status = MimeObject_write(obj, openingDiv, openingDiv.Length(), PR_FALSE);
|
status = MimeObject_write(obj, NS_CONST_CAST(char*, openingDiv.get()), openingDiv.Length(), PR_FALSE);
|
||||||
if (status < 0) return status;
|
if (status < 0) return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -214,7 +214,7 @@ MimeInlineTextPlain_parse_begin (MimeObject *obj)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
openingDiv = "<pre wrap>";
|
openingDiv = "<pre wrap>";
|
||||||
status = MimeObject_write(obj, openingDiv,openingDiv.Length(), PR_FALSE);
|
status = MimeObject_write(obj, NS_CONST_CAST(char*, openingDiv.get()), openingDiv.Length(), PR_FALSE);
|
||||||
if (status < 0) return status;
|
if (status < 0) return status;
|
||||||
|
|
||||||
/* text/plain objects always have separators before and after them.
|
/* text/plain objects always have separators before and after them.
|
||||||
|
|
|
@ -707,7 +707,7 @@ nsresult nsHTTPResponse::EmitHeaders(nsCString& aResponseBuffer)
|
||||||
|
|
||||||
char *statusLine;
|
char *statusLine;
|
||||||
statusLine = PR_smprintf("HTTP/%s %3d %s", versionString, mStatus,
|
statusLine = PR_smprintf("HTTP/%s %3d %s", versionString, mStatus,
|
||||||
(char*)mStatusString);
|
mStatusString.get());
|
||||||
if (!statusLine)
|
if (!statusLine)
|
||||||
return NS_ERROR_OUT_OF_MEMORY;
|
return NS_ERROR_OUT_OF_MEMORY;
|
||||||
|
|
||||||
|
|
|
@ -503,7 +503,8 @@ nsHTTPServerListener::OnDataAvailable(nsIRequest *request,
|
||||||
nsCString ts(trailerHeader);
|
nsCString ts(trailerHeader);
|
||||||
ts.StripWhitespace();
|
ts.StripWhitespace();
|
||||||
|
|
||||||
char *cp = ts;
|
// XXXjag convert to new string code sometime
|
||||||
|
char *cp = NS_CONST_CAST(char*, ts.get());
|
||||||
|
|
||||||
while (*cp) {
|
while (*cp) {
|
||||||
char * pp = PL_strchr(cp , ',');
|
char * pp = PL_strchr(cp , ',');
|
||||||
|
|
|
@ -157,7 +157,7 @@ nsIndexedToHTML::Handle201(char* buffer, nsString &pushBuffer)
|
||||||
pushBuffer.AppendWithConversion(filename);
|
pushBuffer.AppendWithConversion(filename);
|
||||||
pushBuffer.AppendWithConversion("\"> ");
|
pushBuffer.AppendWithConversion("\"> ");
|
||||||
|
|
||||||
nsUnescape(filename);
|
nsUnescape(NS_CONST_CAST(char*, filename.get()));
|
||||||
pushBuffer.AppendWithConversion(filename);
|
pushBuffer.AppendWithConversion(filename);
|
||||||
pushBuffer.AppendWithConversion("</a>");
|
pushBuffer.AppendWithConversion("</a>");
|
||||||
pushBuffer.AppendWithConversion("</td>\n");
|
pushBuffer.AppendWithConversion("</td>\n");
|
||||||
|
|
|
@ -82,7 +82,7 @@ int writeDBM(int cycles)
|
||||||
nsCAutoString keyName("foo");
|
nsCAutoString keyName("foo");
|
||||||
keyName.AppendInt( x );
|
keyName.AppendInt( x );
|
||||||
|
|
||||||
db_key.data = (char*)keyName;
|
db_key.data = NS_CONST_CAST(char*, keyName.get());
|
||||||
db_key.size = keyName.Length();
|
db_key.size = keyName.Length();
|
||||||
|
|
||||||
db_data.data = data;
|
db_data.data = data;
|
||||||
|
@ -95,7 +95,7 @@ int writeDBM(int cycles)
|
||||||
#if USE_ENTRY_ID
|
#if USE_ENTRY_ID
|
||||||
db_key.data = (void*)&x;
|
db_key.data = (void*)&x;
|
||||||
db_key.size = sizeof(x);
|
db_key.size = sizeof(x);
|
||||||
db_data.data = (char*)keyName;
|
db_data.data = NS_CONST_CAST(char*, keyName.get());
|
||||||
db_data.size = keyName.Length();
|
db_data.size = keyName.Length();
|
||||||
|
|
||||||
if(0 != (*myDB->put)(myDB, &db_key, &db_data, 0)) {
|
if(0 != (*myDB->put)(myDB, &db_key, &db_data, 0)) {
|
||||||
|
@ -203,7 +203,7 @@ writeFile(int cycles)
|
||||||
|
|
||||||
fd = PR_OpenFile(filename, PR_WRONLY|PR_TRUNCATE, 0644);
|
fd = PR_OpenFile(filename, PR_WRONLY|PR_TRUNCATE, 0644);
|
||||||
if (!fd)
|
if (!fd)
|
||||||
printf("bad filename? %s\n", (char*)filename);
|
printf("bad filename? %s\n", filename.get());
|
||||||
|
|
||||||
i2 = PR_IntervalNow();
|
i2 = PR_IntervalNow();
|
||||||
|
|
||||||
|
|
|
@ -566,7 +566,7 @@ PRUnichar* nsCString::ToNewUnicode() const {
|
||||||
if (result) {
|
if (result) {
|
||||||
CBufDescriptor desc(result, PR_TRUE, mLength + 1, 0);
|
CBufDescriptor desc(result, PR_TRUE, mLength + 1, 0);
|
||||||
nsAutoString temp(desc);
|
nsAutoString temp(desc);
|
||||||
temp.AssignWithConversion(*this);
|
temp.AssignWithConversion(mStr);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -589,7 +589,7 @@ char* nsCString::ToCString(char* aBuf, PRUint32 aBufLength,PRUint32 anOffset) co
|
||||||
|
|
||||||
CBufDescriptor theDescr(aBuf,PR_TRUE,aBufLength,0);
|
CBufDescriptor theDescr(aBuf,PR_TRUE,aBufLength,0);
|
||||||
nsCAutoString temp(theDescr);
|
nsCAutoString temp(theDescr);
|
||||||
temp.Assign(*this, PR_MIN(mLength, aBufLength-1));
|
temp.Assign(mStr, PR_MIN(mLength, aBufLength-1));
|
||||||
temp.mStr=0;
|
temp.mStr=0;
|
||||||
}
|
}
|
||||||
return aBuf;
|
return aBuf;
|
||||||
|
|
|
@ -232,7 +232,6 @@ public:
|
||||||
string conversion methods...
|
string conversion methods...
|
||||||
*********************************************************************/
|
*********************************************************************/
|
||||||
//#ifndef STANDALONE_STRING_TESTS
|
//#ifndef STANDALONE_STRING_TESTS
|
||||||
operator char*() {return mStr;}
|
|
||||||
operator const char*() const {return (const char*)mStr;}
|
operator const char*() const {return (const char*)mStr;}
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
|
@ -528,24 +527,13 @@ class NS_COM NS_ConvertUCS2toUTF8
|
||||||
|
|
||||||
explicit NS_ConvertUCS2toUTF8( const nsAReadableString& aString );
|
explicit NS_ConvertUCS2toUTF8( const nsAReadableString& aString );
|
||||||
|
|
||||||
operator const char*() const // use |get()|
|
|
||||||
{
|
|
||||||
NS_WARNING("Implicit conversion from |NS_ConvertUCS2toUTF8| to |const char*| is deprecated, use |get()| instead.");
|
|
||||||
return get();
|
|
||||||
}
|
|
||||||
|
|
||||||
operator char*() // use |get()|
|
|
||||||
{
|
|
||||||
NS_WARNING("Implicit conversion from |NS_ConvertUCS2toUTF8| to |char*| is deprecated, use |NS_CONST_CAST()| and |get()| instead.");
|
|
||||||
return NS_CONST_CAST(char*, get());
|
|
||||||
}
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void Append( const PRUnichar* aString, PRUint32 aLength );
|
void Append( const PRUnichar* aString, PRUint32 aLength );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// NOT TO BE IMPLEMENTED
|
// NOT TO BE IMPLEMENTED
|
||||||
NS_ConvertUCS2toUTF8( char );
|
NS_ConvertUCS2toUTF8( char );
|
||||||
|
operator const char*() const; // use |get()|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -855,7 +855,7 @@ void nsClipboard::SelectionGetCB(GtkWidget *widget,
|
||||||
{
|
{
|
||||||
dataFlavor = kUnicodeMime;
|
dataFlavor = kUnicodeMime;
|
||||||
} else {
|
} else {
|
||||||
dataFlavor = type;
|
dataFlavor = type.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get data out of transferable.
|
// Get data out of transferable.
|
||||||
|
|
|
@ -1126,7 +1126,7 @@ nsLocalFile::Spawn(const char **args, PRUint32 count)
|
||||||
my_argv[i+1] = (char *)args[i];
|
my_argv[i+1] = (char *)args[i];
|
||||||
}
|
}
|
||||||
// we need to set argv[0] to the program name.
|
// we need to set argv[0] to the program name.
|
||||||
my_argv[0] = mResolvedPath;
|
my_argv[0] = NS_CONST_CAST(char*, mResolvedPath.get());
|
||||||
|
|
||||||
// null terminate the array
|
// null terminate the array
|
||||||
my_argv[count+1] = NULL;
|
my_argv[count+1] = NULL;
|
||||||
|
|
|
@ -566,7 +566,7 @@ PRUnichar* nsCString::ToNewUnicode() const {
|
||||||
if (result) {
|
if (result) {
|
||||||
CBufDescriptor desc(result, PR_TRUE, mLength + 1, 0);
|
CBufDescriptor desc(result, PR_TRUE, mLength + 1, 0);
|
||||||
nsAutoString temp(desc);
|
nsAutoString temp(desc);
|
||||||
temp.AssignWithConversion(*this);
|
temp.AssignWithConversion(mStr);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -589,7 +589,7 @@ char* nsCString::ToCString(char* aBuf, PRUint32 aBufLength,PRUint32 anOffset) co
|
||||||
|
|
||||||
CBufDescriptor theDescr(aBuf,PR_TRUE,aBufLength,0);
|
CBufDescriptor theDescr(aBuf,PR_TRUE,aBufLength,0);
|
||||||
nsCAutoString temp(theDescr);
|
nsCAutoString temp(theDescr);
|
||||||
temp.Assign(*this, PR_MIN(mLength, aBufLength-1));
|
temp.Assign(mStr, PR_MIN(mLength, aBufLength-1));
|
||||||
temp.mStr=0;
|
temp.mStr=0;
|
||||||
}
|
}
|
||||||
return aBuf;
|
return aBuf;
|
||||||
|
|
|
@ -232,7 +232,6 @@ public:
|
||||||
string conversion methods...
|
string conversion methods...
|
||||||
*********************************************************************/
|
*********************************************************************/
|
||||||
//#ifndef STANDALONE_STRING_TESTS
|
//#ifndef STANDALONE_STRING_TESTS
|
||||||
operator char*() {return mStr;}
|
|
||||||
operator const char*() const {return (const char*)mStr;}
|
operator const char*() const {return (const char*)mStr;}
|
||||||
//#endif
|
//#endif
|
||||||
|
|
||||||
|
@ -528,24 +527,13 @@ class NS_COM NS_ConvertUCS2toUTF8
|
||||||
|
|
||||||
explicit NS_ConvertUCS2toUTF8( const nsAReadableString& aString );
|
explicit NS_ConvertUCS2toUTF8( const nsAReadableString& aString );
|
||||||
|
|
||||||
operator const char*() const // use |get()|
|
|
||||||
{
|
|
||||||
NS_WARNING("Implicit conversion from |NS_ConvertUCS2toUTF8| to |const char*| is deprecated, use |get()| instead.");
|
|
||||||
return get();
|
|
||||||
}
|
|
||||||
|
|
||||||
operator char*() // use |get()|
|
|
||||||
{
|
|
||||||
NS_WARNING("Implicit conversion from |NS_ConvertUCS2toUTF8| to |char*| is deprecated, use |NS_CONST_CAST()| and |get()| instead.");
|
|
||||||
return NS_CONST_CAST(char*, get());
|
|
||||||
}
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void Append( const PRUnichar* aString, PRUint32 aLength );
|
void Append( const PRUnichar* aString, PRUint32 aLength );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// NOT TO BE IMPLEMENTED
|
// NOT TO BE IMPLEMENTED
|
||||||
NS_ConvertUCS2toUTF8( char );
|
NS_ConvertUCS2toUTF8( char );
|
||||||
|
operator const char*() const; // use |get()|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -315,7 +315,7 @@ nsString nsStreamTransfer::SuggestNameFor( nsIChannel *aChannel, char const *sug
|
||||||
// try to overwrite c:\config.sys or something.
|
// try to overwrite c:\config.sys or something.
|
||||||
nsCOMPtr<nsILocalFile> localFile;
|
nsCOMPtr<nsILocalFile> localFile;
|
||||||
nsCAutoString suggestedFileName(suggestedName);
|
nsCAutoString suggestedFileName(suggestedName);
|
||||||
if ( NS_SUCCEEDED( NS_NewLocalFile( nsUnescape(suggestedFileName), PR_FALSE, getter_AddRefs( localFile ) ) ) ) {
|
if ( NS_SUCCEEDED( NS_NewLocalFile( nsUnescape(NS_CONST_CAST(char*, suggestedFileName.get())), PR_FALSE, getter_AddRefs( localFile ) ) ) ) {
|
||||||
// We want base part of name only.
|
// We want base part of name only.
|
||||||
nsXPIDLString baseName;
|
nsXPIDLString baseName;
|
||||||
if ( NS_SUCCEEDED( localFile->GetUnicodeLeafName( getter_Copies( baseName ) ) ) ) {
|
if ( NS_SUCCEEDED( localFile->GetUnicodeLeafName( getter_Copies( baseName ) ) ) ) {
|
||||||
|
|
|
@ -295,9 +295,9 @@ PRInt32 nsInstallFile::Complete()
|
||||||
{
|
{
|
||||||
nsXPIDLCString path;
|
nsXPIDLCString path;
|
||||||
mFinalFile->GetPath(getter_Copies(path));
|
mFinalFile->GetPath(getter_Copies(path));
|
||||||
VR_Install( NS_ConvertUCS2toUTF8(*mVersionRegistryName),
|
VR_Install( NS_CONST_CAST(char*, NS_ConvertUCS2toUTF8(*mVersionRegistryName).get()),
|
||||||
(char*)(const char*)path, // DO NOT CHANGE THIS.
|
NS_CONST_CAST(char*, path.get()),
|
||||||
NS_ConvertUCS2toUTF8(*mVersionInfo),
|
NS_CONST_CAST(char*, NS_ConvertUCS2toUTF8(*mVersionInfo).get()),
|
||||||
PR_FALSE );
|
PR_FALSE );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче