eapol/eapol_framework/eapol_symbian/eap_server/src/EapServerProcessHandler.cpp
author hgs
Thu, 16 Sep 2010 13:07:04 +0300
changeset 49 43351a4f2da3
parent 36 c98682f98478
permissions -rw-r--r--
201037
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
26
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2001-2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  EAP and WLAN authentication protocols.
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
/*
49
hgs
parents: 36
diff changeset
    19
* %version:  50 %
26
hgs
parents:
diff changeset
    20
*/
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
#include "EapServerProcessHandler.h"
hgs
parents:
diff changeset
    23
#include "EapTraceSymbian.h"
hgs
parents:
diff changeset
    24
#if defined(USE_FAST_EAP_TYPE)
hgs
parents:
diff changeset
    25
#include "PacStoreIf.h"
hgs
parents:
diff changeset
    26
#endif //#if defined(USE_FAST_EAP_TYPE)
hgs
parents:
diff changeset
    27
#include "EapServerStrings.h"
hgs
parents:
diff changeset
    28
#include "eap_automatic_variable.h"
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
CEapServerProcessHandler::CEapServerProcessHandler()
hgs
parents:
diff changeset
    33
: CActive (0)
hgs
parents:
diff changeset
    34
, iClient(0)
hgs
parents:
diff changeset
    35
, iTools(0)
hgs
parents:
diff changeset
    36
, iEapCore(0)
hgs
parents:
diff changeset
    37
, iEapPlugin(0)
hgs
parents:
diff changeset
    38
, iEapSettings(0)
hgs
parents:
diff changeset
    39
, iWapiCore(0)
hgs
parents:
diff changeset
    40
, iWapiSettings(0)
hgs
parents:
diff changeset
    41
#if defined(USE_FAST_EAP_TYPE)
hgs
parents:
diff changeset
    42
, iPacStore(0)
hgs
parents:
diff changeset
    43
#endif //#if defined(USE_FAST_EAP_TYPE)
49
hgs
parents: 36
diff changeset
    44
, iEapSendMessageQueue(0)
hgs
parents: 36
diff changeset
    45
, iEapProcessMessageQueue(0)
hgs
parents: 36
diff changeset
    46
, iProcessMessage(0)
hgs
parents: 36
diff changeset
    47
, iHandlerState(EapServerProcessHandlerState_None)
26
hgs
parents:
diff changeset
    48
{
34
hgs
parents: 26
diff changeset
    49
	EAP_TRACE_DEBUG(
hgs
parents: 26
diff changeset
    50
		iTools,
hgs
parents: 26
diff changeset
    51
		TRACE_FLAGS_DEFAULT,
hgs
parents: 26
diff changeset
    52
		(EAPL("CEapServerProcessHandler::CEapServerProcessHandler(): this=0x%08x\n"),
hgs
parents: 26
diff changeset
    53
		this));
hgs
parents: 26
diff changeset
    54
	EAP_TRACE_RETURN_STRING(iTools, "returns: CEapServerProcessHandler::CEapServerProcessHandler()");
26
hgs
parents:
diff changeset
    55
}
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
    58
hgs
parents:
diff changeset
    59
CEapServerProcessHandler::~CEapServerProcessHandler()
hgs
parents:
diff changeset
    60
{
hgs
parents:
diff changeset
    61
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
    62
		iTools,
hgs
parents:
diff changeset
    63
		TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
    64
		(EAPL("CEapServerProcessHandler::~CEapServerProcessHandler(): this=0x%08x\n"),
hgs
parents:
diff changeset
    65
		this));
hgs
parents:
diff changeset
    66
	EAP_TRACE_RETURN_STRING(iTools, "returns: CEapServerProcessHandler::~CEapServerProcessHandler()");
hgs
parents:
diff changeset
    67
49
hgs
parents: 36
diff changeset
    68
	if (iClient)
hgs
parents: 36
diff changeset
    69
		{
hgs
parents: 36
diff changeset
    70
		TInt error = iClient->CancelReadyHandler(this);
hgs
parents: 36
diff changeset
    71
		if (error != KErrNone)
hgs
parents: 36
diff changeset
    72
			{
hgs
parents: 36
diff changeset
    73
			EAP_TRACE_DEBUG(
hgs
parents: 36
diff changeset
    74
				iTools,
hgs
parents: 36
diff changeset
    75
				TRACE_FLAGS_DEFAULT,
hgs
parents: 36
diff changeset
    76
				(EAPL("ERROR: CEapServerProcessHandler::~CEapServerProcessHandler(): iClient->CancelReadyHandler() failed, error=%d\n"),
hgs
parents: 36
diff changeset
    77
				error));
hgs
parents: 36
diff changeset
    78
			}
hgs
parents: 36
diff changeset
    79
		}
26
hgs
parents:
diff changeset
    80
	delete iEapCore;
hgs
parents:
diff changeset
    81
	iEapCore = 0;
hgs
parents:
diff changeset
    82
hgs
parents:
diff changeset
    83
	delete iEapPlugin;
hgs
parents:
diff changeset
    84
	iEapPlugin = 0;
hgs
parents:
diff changeset
    85
hgs
parents:
diff changeset
    86
	delete iEapSettings;
hgs
parents:
diff changeset
    87
	iEapSettings = 0;
hgs
parents:
diff changeset
    88
hgs
parents:
diff changeset
    89
    delete iWapiCore;
hgs
parents:
diff changeset
    90
    iWapiCore = 0;
hgs
parents:
diff changeset
    91
hgs
parents:
diff changeset
    92
    delete iWapiSettings;
hgs
parents:
diff changeset
    93
    iWapiSettings = 0;
hgs
parents:
diff changeset
    94
hgs
parents:
diff changeset
    95
#if defined(USE_FAST_EAP_TYPE)
hgs
parents:
diff changeset
    96
    delete iPacStore;
hgs
parents:
diff changeset
    97
    iPacStore = 0;
hgs
parents:
diff changeset
    98
#endif //#if defined(USE_FAST_EAP_TYPE)
hgs
parents:
diff changeset
    99
49
hgs
parents: 36
diff changeset
   100
	delete iEapSendMessageQueue;
hgs
parents: 36
diff changeset
   101
	iEapSendMessageQueue = 0;
hgs
parents: 36
diff changeset
   102
hgs
parents: 36
diff changeset
   103
    delete iEapProcessMessageQueue;
hgs
parents: 36
diff changeset
   104
	iEapProcessMessageQueue = 0;
hgs
parents: 36
diff changeset
   105
hgs
parents: 36
diff changeset
   106
	if(IsActive())
hgs
parents: 36
diff changeset
   107
	{
hgs
parents: 36
diff changeset
   108
		Cancel();
hgs
parents: 36
diff changeset
   109
	}
26
hgs
parents:
diff changeset
   110
}
hgs
parents:
diff changeset
   111
    
hgs
parents:
diff changeset
   112
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
   113
hgs
parents:
diff changeset
   114
CEapServerProcessHandler* CEapServerProcessHandler::NewL()
hgs
parents:
diff changeset
   115
{
hgs
parents:
diff changeset
   116
	return new (ELeave) CEapServerProcessHandler();
hgs
parents:
diff changeset
   117
}
hgs
parents:
diff changeset
   118
hgs
parents:
diff changeset
   119
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
   120
hgs
parents:
diff changeset
   121
void CEapServerProcessHandler::ConstructL(AbsEapProcessSendInterface* const client, abs_eap_am_tools_c * const tools)
hgs
parents:
diff changeset
   122
{
hgs
parents:
diff changeset
   123
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   124
		tools,
hgs
parents:
diff changeset
   125
		TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   126
		(EAPL("CEapServerProcessHandler::ConstructL(): this=0x%08x\n"),
hgs
parents:
diff changeset
   127
		this));
hgs
parents:
diff changeset
   128
	EAP_TRACE_RETURN_STRING(tools, "returns: CEapServerProcessHandler::ConstructL()");
hgs
parents:
diff changeset
   129
hgs
parents:
diff changeset
   130
	iClient = client;
49
hgs
parents: 36
diff changeset
   131
26
hgs
parents:
diff changeset
   132
	iTools = tools;
hgs
parents:
diff changeset
   133
49
hgs
parents: 36
diff changeset
   134
	iEapSendMessageQueue = new(ELeave) EapMessageQueue(iTools);
hgs
parents: 36
diff changeset
   135
hgs
parents: 36
diff changeset
   136
	iEapProcessMessageQueue = new(ELeave) EapMessageQueue(iTools);
26
hgs
parents:
diff changeset
   137
}
hgs
parents:
diff changeset
   138
hgs
parents:
diff changeset
   139
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
   140
hgs
parents:
diff changeset
   141
eap_status_e CEapServerProcessHandler::SendData(const void * const data, const u32_t length, TEapRequests message)
hgs
parents:
diff changeset
   142
{
49
hgs
parents: 36
diff changeset
   143
26
hgs
parents:
diff changeset
   144
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   145
		iTools,
hgs
parents:
diff changeset
   146
		TRACE_FLAGS_DEFAULT,
49
hgs
parents: 36
diff changeset
   147
		(EAPL("CEapServerProcessHandler::SendData(): this=0x%08x, iProcessMessage=0x%08x, send message=%d=%s\n"),
hgs
parents: 36
diff changeset
   148
		this,
hgs
parents: 36
diff changeset
   149
		iProcessMessage,
hgs
parents: 36
diff changeset
   150
		message,
hgs
parents: 36
diff changeset
   151
		EapServerStrings::GetEapRequestsString(message)));
hgs
parents: 36
diff changeset
   152
26
hgs
parents:
diff changeset
   153
	EAP_TRACE_RETURN_STRING(iTools, "returns: CEapServerProcessHandler::SendData()");
hgs
parents:
diff changeset
   154
hgs
parents:
diff changeset
   155
	eap_status_e status(eap_status_ok);
hgs
parents:
diff changeset
   156
49
hgs
parents: 36
diff changeset
   157
	// First message handled, remove the message.
hgs
parents: 36
diff changeset
   158
	iEapProcessMessageQueue->DeleteFirstMessage(iProcessMessage);
hgs
parents: 36
diff changeset
   159
	iProcessMessage = 0;
hgs
parents: 36
diff changeset
   160
26
hgs
parents:
diff changeset
   161
	SaveMessage(message, data, length);
hgs
parents:
diff changeset
   162
hgs
parents:
diff changeset
   163
	return status;
hgs
parents:
diff changeset
   164
}
hgs
parents:
diff changeset
   165
hgs
parents:
diff changeset
   166
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
   167
hgs
parents:
diff changeset
   168
void CEapServerProcessHandler::SaveMessage(TEapRequests message, const void * const data, const TUint length)
hgs
parents:
diff changeset
   169
{
hgs
parents:
diff changeset
   170
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   171
		iTools,
hgs
parents:
diff changeset
   172
		TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   173
		(EAPL("CEapServerProcessHandler::SaveMessage(): this=0x%08x, message=%d=%s\n"),
hgs
parents:
diff changeset
   174
		this,
hgs
parents:
diff changeset
   175
		message,
hgs
parents:
diff changeset
   176
		EapServerStrings::GetEapRequestsString(message)));
hgs
parents:
diff changeset
   177
	EAP_TRACE_RETURN_STRING(iTools, "returns: CEapServerProcessHandler::SaveMessage()");
hgs
parents:
diff changeset
   178
hgs
parents:
diff changeset
   179
	EAP_TRACE_DATA_DEBUG(
hgs
parents:
diff changeset
   180
		iTools,
36
hgs
parents: 34
diff changeset
   181
		EAP_TRACE_FLAGS_NEVER,
26
hgs
parents:
diff changeset
   182
		(EAPL("CEapServerProcessHandler::SaveMessage()"),
hgs
parents:
diff changeset
   183
		data,
hgs
parents:
diff changeset
   184
		length));
hgs
parents:
diff changeset
   185
49
hgs
parents: 36
diff changeset
   186
	if (message == EEapCoreSendData || message == EEapPluginSendData || message == EEapSettingsSendData || message == EEapPacStoreSendData || message == EWapiCoreSendData)
hgs
parents: 36
diff changeset
   187
	{
hgs
parents: 36
diff changeset
   188
		TInt error = iEapSendMessageQueue->AddMessage(message, data, length);
26
hgs
parents:
diff changeset
   189
49
hgs
parents: 36
diff changeset
   190
		if (error != KErrNone)
hgs
parents: 36
diff changeset
   191
		{
hgs
parents: 36
diff changeset
   192
			EAP_TRACE_DEBUG(
hgs
parents: 36
diff changeset
   193
				iTools,
hgs
parents: 36
diff changeset
   194
				TRACE_FLAGS_DEFAULT,
hgs
parents: 36
diff changeset
   195
				(EAPL("ERROR: CEapServerProcessHandler::SaveMessage(): failed = %d\n"),
hgs
parents: 36
diff changeset
   196
				error));
hgs
parents: 36
diff changeset
   197
			return;
hgs
parents: 36
diff changeset
   198
		}
26
hgs
parents:
diff changeset
   199
49
hgs
parents: 36
diff changeset
   200
		Activate(EapServerProcessHandlerState_Send);
hgs
parents: 36
diff changeset
   201
	}
hgs
parents: 36
diff changeset
   202
	else
26
hgs
parents:
diff changeset
   203
	{
49
hgs
parents: 36
diff changeset
   204
		TInt error = iEapProcessMessageQueue->AddMessage(message, data, length);
hgs
parents: 36
diff changeset
   205
hgs
parents: 36
diff changeset
   206
		if (error != KErrNone)
hgs
parents: 36
diff changeset
   207
		{
hgs
parents: 36
diff changeset
   208
			EAP_TRACE_DEBUG(
hgs
parents: 36
diff changeset
   209
				iTools,
hgs
parents: 36
diff changeset
   210
				TRACE_FLAGS_DEFAULT,
hgs
parents: 36
diff changeset
   211
				(EAPL("ERROR: CEapServerProcessHandler::SaveMessage(): failed = %d\n"),
hgs
parents: 36
diff changeset
   212
				error));
hgs
parents: 36
diff changeset
   213
			return;
hgs
parents: 36
diff changeset
   214
		}
hgs
parents: 36
diff changeset
   215
hgs
parents: 36
diff changeset
   216
		error = iClient->AddReadyHandler(this);
hgs
parents: 36
diff changeset
   217
		if (error != KErrNone)
hgs
parents: 36
diff changeset
   218
		{
hgs
parents: 36
diff changeset
   219
			EAP_TRACE_DEBUG(
hgs
parents: 36
diff changeset
   220
				iTools,
hgs
parents: 36
diff changeset
   221
				TRACE_FLAGS_DEFAULT,
hgs
parents: 36
diff changeset
   222
				(EAPL("ERROR: CEapServerProcessHandler::SaveMessage(): iClient->AddReadyHandler(this) failed = %d\n"),
hgs
parents: 36
diff changeset
   223
				error));
hgs
parents: 36
diff changeset
   224
			return;
hgs
parents: 36
diff changeset
   225
		}
26
hgs
parents:
diff changeset
   226
	}
hgs
parents:
diff changeset
   227
hgs
parents:
diff changeset
   228
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   229
		iTools,
hgs
parents:
diff changeset
   230
		TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   231
		(EAPL("CEapServerProcessHandler::SaveMessage(): returns this=0x%08x, message=%d=%s\n"),
hgs
parents:
diff changeset
   232
		this,
hgs
parents:
diff changeset
   233
		message,
hgs
parents:
diff changeset
   234
		EapServerStrings::GetEapRequestsString(message)));
hgs
parents:
diff changeset
   235
}
hgs
parents:
diff changeset
   236
hgs
parents:
diff changeset
   237
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
   238
49
hgs
parents: 36
diff changeset
   239
void CEapServerProcessHandler::Activate(const CEapServerProcessHandlerState aState)
26
hgs
parents:
diff changeset
   240
{
hgs
parents:
diff changeset
   241
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   242
		iTools,
hgs
parents:
diff changeset
   243
		TRACE_FLAGS_DEFAULT,
49
hgs
parents: 36
diff changeset
   244
		(EAPL("CEapServerProcessHandler::Activate(): this=0x%08x, iHandlerState=%d, aState=%d\n"),
hgs
parents: 36
diff changeset
   245
		this,
hgs
parents: 36
diff changeset
   246
		iHandlerState,
hgs
parents: 36
diff changeset
   247
		aState));
26
hgs
parents:
diff changeset
   248
	EAP_TRACE_RETURN_STRING(iTools, "returns: CEapServerProcessHandler::Activate()");
hgs
parents:
diff changeset
   249
hgs
parents:
diff changeset
   250
	if(!IsActive())
hgs
parents:
diff changeset
   251
	{
hgs
parents:
diff changeset
   252
		EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   253
			iTools,
hgs
parents:
diff changeset
   254
			TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   255
			(EAPL("CEapServerProcessHandler::Activate(): calls User::RequestComplete()\n")));
hgs
parents:
diff changeset
   256
49
hgs
parents: 36
diff changeset
   257
		iHandlerState = aState;
hgs
parents: 36
diff changeset
   258
26
hgs
parents:
diff changeset
   259
		TRequestStatus* status = &iStatus;
hgs
parents:
diff changeset
   260
		User::RequestComplete(status, KErrNone);
hgs
parents:
diff changeset
   261
hgs
parents:
diff changeset
   262
		EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   263
			iTools,
hgs
parents:
diff changeset
   264
			TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   265
			(EAPL("CEapServerProcessHandler::Activate(): calls SetActive()\n")));
hgs
parents:
diff changeset
   266
hgs
parents:
diff changeset
   267
		SetActive();
hgs
parents:
diff changeset
   268
	}
hgs
parents:
diff changeset
   269
	else
hgs
parents:
diff changeset
   270
	{
hgs
parents:
diff changeset
   271
		EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   272
			iTools,
hgs
parents:
diff changeset
   273
			TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   274
			(EAPL("CEapServerProcessHandler::Activate(): Already active.\n")));
hgs
parents:
diff changeset
   275
	}
hgs
parents:
diff changeset
   276
}
hgs
parents:
diff changeset
   277
hgs
parents:
diff changeset
   278
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
   279
hgs
parents:
diff changeset
   280
void CEapServerProcessHandler::RunL()
hgs
parents:
diff changeset
   281
{
hgs
parents:
diff changeset
   282
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   283
		iTools,
hgs
parents:
diff changeset
   284
		TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   285
		(EAPL("=start=====================================================================\n")));
hgs
parents:
diff changeset
   286
hgs
parents:
diff changeset
   287
	EAP_TRACE_RETURN_STRING(iTools, "returns: CEapServerProcessHandler::RunL()");
hgs
parents:
diff changeset
   288
hgs
parents:
diff changeset
   289
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   290
		iTools,
hgs
parents:
diff changeset
   291
		TRACE_FLAGS_DEFAULT,
49
hgs
parents: 36
diff changeset
   292
		(EAPL("CEapServerProcessHandler::RunL(): this=0x%08x, iProcessMessage=0x%08x, iHandlerState=%d\n"),
hgs
parents: 36
diff changeset
   293
		this,
hgs
parents: 36
diff changeset
   294
		iProcessMessage,
hgs
parents: 36
diff changeset
   295
		iHandlerState));
hgs
parents: 36
diff changeset
   296
hgs
parents: 36
diff changeset
   297
	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
hgs
parents: 36
diff changeset
   298
hgs
parents: 36
diff changeset
   299
	const EapMessageBuffer * aSendMessage = 0;
hgs
parents: 36
diff changeset
   300
hgs
parents: 36
diff changeset
   301
	// The send-message queue have priority over the process-message queue.
hgs
parents: 36
diff changeset
   302
	EapMessageBuffer * message = iEapSendMessageQueue->GetFirstMessage();
hgs
parents: 36
diff changeset
   303
hgs
parents: 36
diff changeset
   304
	if (message != 0)
hgs
parents: 36
diff changeset
   305
	{
hgs
parents: 36
diff changeset
   306
		EAP_TRACE_DEBUG(
hgs
parents: 36
diff changeset
   307
			iTools,
hgs
parents: 36
diff changeset
   308
			TRACE_FLAGS_DEFAULT,
hgs
parents: 36
diff changeset
   309
			(EAPL("CEapServerProcessHandler::RunL(): Send-message=0x%08x\n"),
hgs
parents: 36
diff changeset
   310
			this,
hgs
parents: 36
diff changeset
   311
			message));
26
hgs
parents:
diff changeset
   312
49
hgs
parents: 36
diff changeset
   313
		aSendMessage = message;
hgs
parents: 36
diff changeset
   314
	}
hgs
parents: 36
diff changeset
   315
hgs
parents: 36
diff changeset
   316
	// When send-operation is only allowed the process-message queue is NOT read.
hgs
parents: 36
diff changeset
   317
	if (message == 0
hgs
parents: 36
diff changeset
   318
		&& iHandlerState != EapServerProcessHandlerState_Send
hgs
parents: 36
diff changeset
   319
		)
hgs
parents: 36
diff changeset
   320
	{
hgs
parents: 36
diff changeset
   321
		message = iEapProcessMessageQueue->GetFirstMessage();
hgs
parents: 36
diff changeset
   322
hgs
parents: 36
diff changeset
   323
		EAP_ASSERT_TOOLS(iTools, iProcessMessage == 0);
hgs
parents: 36
diff changeset
   324
hgs
parents: 36
diff changeset
   325
		iProcessMessage = message;
hgs
parents: 36
diff changeset
   326
hgs
parents: 36
diff changeset
   327
		EAP_TRACE_DEBUG(
hgs
parents: 36
diff changeset
   328
			iTools,
hgs
parents: 36
diff changeset
   329
			TRACE_FLAGS_DEFAULT,
hgs
parents: 36
diff changeset
   330
			(EAPL("CEapServerProcessHandler::RunL(): Process-message=0x%08x\n"),
hgs
parents: 36
diff changeset
   331
			this,
hgs
parents: 36
diff changeset
   332
			message));
hgs
parents: 36
diff changeset
   333
	}
hgs
parents: 36
diff changeset
   334
hgs
parents: 36
diff changeset
   335
	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
26
hgs
parents:
diff changeset
   336
hgs
parents:
diff changeset
   337
	if (message != 0)
hgs
parents:
diff changeset
   338
	{
hgs
parents:
diff changeset
   339
		EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   340
			iTools,
hgs
parents:
diff changeset
   341
			TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   342
			(EAPL("CEapServerProcessHandler::RunL(): message->GetRequestType()=%d=%s, data=0x%08x, size=%d\n"),
hgs
parents:
diff changeset
   343
			message->GetRequestType(),
hgs
parents:
diff changeset
   344
			EapServerStrings::GetEapRequestsString(message->GetRequestType()),
hgs
parents:
diff changeset
   345
			message->GetData()->Ptr(),
hgs
parents:
diff changeset
   346
			message->GetData()->Size()));
hgs
parents:
diff changeset
   347
hgs
parents:
diff changeset
   348
		eap_status_e status(eap_status_ok);
hgs
parents:
diff changeset
   349
49
hgs
parents: 36
diff changeset
   350
		// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
hgs
parents: 36
diff changeset
   351
26
hgs
parents:
diff changeset
   352
		switch (message->GetRequestType())
hgs
parents:
diff changeset
   353
		{
hgs
parents:
diff changeset
   354
hgs
parents:
diff changeset
   355
		case EEapCoreIfNew:
hgs
parents:
diff changeset
   356
hgs
parents:
diff changeset
   357
			{
hgs
parents:
diff changeset
   358
				EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   359
					iTools,
hgs
parents:
diff changeset
   360
					TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   361
					(EAPL("CEapServerProcessHandler::RunL() EEapCoreIfNew\n")));
hgs
parents:
diff changeset
   362
hgs
parents:
diff changeset
   363
				CEapCoreIf * tmpEapCore = CEapCoreIf::new_CEapCoreIf(
hgs
parents:
diff changeset
   364
					iTools,
hgs
parents:
diff changeset
   365
					ETrue,
hgs
parents:
diff changeset
   366
					0,
hgs
parents:
diff changeset
   367
					this);
hgs
parents:
diff changeset
   368
hgs
parents:
diff changeset
   369
				if (tmpEapCore != 0)
hgs
parents:
diff changeset
   370
				{
hgs
parents:
diff changeset
   371
					CleanupStack::PushL(tmpEapCore);
hgs
parents:
diff changeset
   372
hgs
parents:
diff changeset
   373
					if (tmpEapCore->get_is_valid() == false)
hgs
parents:
diff changeset
   374
					{
hgs
parents:
diff changeset
   375
						EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   376
							iTools,
hgs
parents:
diff changeset
   377
							TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   378
							(EAPL("ERROR: CEapServerProcessHandler::RunL(): CEapCoreIf::new_CEapCoreIf() failed, this=0x%08x\n"),
hgs
parents:
diff changeset
   379
							this));
hgs
parents:
diff changeset
   380
hgs
parents:
diff changeset
   381
						User::Leave(iTools->convert_eapol_error_to_am_error(EAP_STATUS_RETURN(iTools, eap_status_allocation_error)));
hgs
parents:
diff changeset
   382
					}
hgs
parents:
diff changeset
   383
hgs
parents:
diff changeset
   384
					const void * const aData = reinterpret_cast<const void *>(message->GetData()->Ptr());
hgs
parents:
diff changeset
   385
					const TInt aLength = message->GetData()->Size();
hgs
parents:
diff changeset
   386
hgs
parents:
diff changeset
   387
					const eap_variable_data_c client_configuration(
hgs
parents:
diff changeset
   388
						iTools,
hgs
parents:
diff changeset
   389
						aData,
hgs
parents:
diff changeset
   390
						aLength,
hgs
parents:
diff changeset
   391
						false,
hgs
parents:
diff changeset
   392
						false);
hgs
parents:
diff changeset
   393
					if (client_configuration.get_is_valid() == false)
hgs
parents:
diff changeset
   394
					{
hgs
parents:
diff changeset
   395
						EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   396
							iTools,
hgs
parents:
diff changeset
   397
							TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   398
							(EAPL("ERROR: CEapServerProcessHandler::RunL(): eap_variable_data_c client_configuration() failed, this=0x%08x\n"),
hgs
parents:
diff changeset
   399
							this));
hgs
parents:
diff changeset
   400
hgs
parents:
diff changeset
   401
						User::Leave(iTools->convert_eapol_error_to_am_error(EAP_STATUS_RETURN(iTools, eap_status_allocation_error)));
hgs
parents:
diff changeset
   402
					}
hgs
parents:
diff changeset
   403
hgs
parents:
diff changeset
   404
					status = tmpEapCore->configure(&client_configuration);
hgs
parents:
diff changeset
   405
					if (status != eap_status_ok)
hgs
parents:
diff changeset
   406
					{
hgs
parents:
diff changeset
   407
						EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   408
							iTools,
hgs
parents:
diff changeset
   409
							TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   410
							(EAPL("ERROR: CEapServerProcessHandler::RunL(): tmpEapCore->configure() failed, this=0x%08x, status=%d=%s\n"),
hgs
parents:
diff changeset
   411
							this,
hgs
parents:
diff changeset
   412
							status,
hgs
parents:
diff changeset
   413
							eap_status_string_c::get_status_string(status)));
hgs
parents:
diff changeset
   414
hgs
parents:
diff changeset
   415
						User::Leave(iTools->convert_eapol_error_to_am_error(EAP_STATUS_RETURN(iTools, status)));
hgs
parents:
diff changeset
   416
					}
hgs
parents:
diff changeset
   417
hgs
parents:
diff changeset
   418
					iEapCore = tmpEapCore;
hgs
parents:
diff changeset
   419
hgs
parents:
diff changeset
   420
					CleanupStack::Pop(tmpEapCore);
hgs
parents:
diff changeset
   421
				}
hgs
parents:
diff changeset
   422
				else
hgs
parents:
diff changeset
   423
				{
hgs
parents:
diff changeset
   424
					EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   425
						iTools,
hgs
parents:
diff changeset
   426
						TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   427
						(EAPL("ERROR: CEapServerProcessHandler::RunL(): EEapCoreIfNew, iEapCore is NULL\n")));
hgs
parents:
diff changeset
   428
				}
hgs
parents:
diff changeset
   429
			}
hgs
parents:
diff changeset
   430
hgs
parents:
diff changeset
   431
			break;
hgs
parents:
diff changeset
   432
hgs
parents:
diff changeset
   433
		case EEapPluginNew:
hgs
parents:
diff changeset
   434
hgs
parents:
diff changeset
   435
			{
hgs
parents:
diff changeset
   436
				EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   437
					iTools,
hgs
parents:
diff changeset
   438
					TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   439
					(EAPL("CEapServerProcessHandler::RunL() EEapPluginNew\n")));
hgs
parents:
diff changeset
   440
hgs
parents:
diff changeset
   441
				CEapPluginIf * tmpEapPlugin = CEapPluginIf::new_CEapPluginIf(iTools);
hgs
parents:
diff changeset
   442
hgs
parents:
diff changeset
   443
				if (tmpEapPlugin != 0)
hgs
parents:
diff changeset
   444
				{
hgs
parents:
diff changeset
   445
					CleanupStack::PushL(tmpEapPlugin);
hgs
parents:
diff changeset
   446
hgs
parents:
diff changeset
   447
					if (tmpEapPlugin->get_is_valid() == false)
hgs
parents:
diff changeset
   448
					{
hgs
parents:
diff changeset
   449
						EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   450
							iTools,
hgs
parents:
diff changeset
   451
							TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   452
							(EAPL("ERROR: CEapServerProcessHandler::RunL(): CEapPluginIf::new_CEapPluginIf() failed, this=0x%08x\n"),
hgs
parents:
diff changeset
   453
							this));
hgs
parents:
diff changeset
   454
hgs
parents:
diff changeset
   455
						User::Leave(iTools->convert_eapol_error_to_am_error(EAP_STATUS_RETURN(iTools, eap_status_allocation_error)));
hgs
parents:
diff changeset
   456
					}
hgs
parents:
diff changeset
   457
hgs
parents:
diff changeset
   458
					tmpEapPlugin->set_partner(this);
hgs
parents:
diff changeset
   459
hgs
parents:
diff changeset
   460
					const void * const aData = reinterpret_cast<const void *>(message->GetData()->Ptr());
hgs
parents:
diff changeset
   461
					const TInt aLength = message->GetData()->Size();
hgs
parents:
diff changeset
   462
hgs
parents:
diff changeset
   463
					const eap_variable_data_c client_configuration(
hgs
parents:
diff changeset
   464
						iTools,
hgs
parents:
diff changeset
   465
						aData,
hgs
parents:
diff changeset
   466
						aLength,
hgs
parents:
diff changeset
   467
						false,
hgs
parents:
diff changeset
   468
						false);
hgs
parents:
diff changeset
   469
					if (client_configuration.get_is_valid() == false)
hgs
parents:
diff changeset
   470
					{
hgs
parents:
diff changeset
   471
						EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   472
							iTools,
hgs
parents:
diff changeset
   473
							TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   474
							(EAPL("ERROR: CEapServerProcessHandler::RunL(): eap_variable_data_c client_configuration() failed, this=0x%08x\n"),
hgs
parents:
diff changeset
   475
							this));
hgs
parents:
diff changeset
   476
hgs
parents:
diff changeset
   477
						User::Leave(iTools->convert_eapol_error_to_am_error(EAP_STATUS_RETURN(iTools, eap_status_allocation_error)));
hgs
parents:
diff changeset
   478
					}
hgs
parents:
diff changeset
   479
hgs
parents:
diff changeset
   480
					status = tmpEapPlugin->configure(&client_configuration);
hgs
parents:
diff changeset
   481
					if (status != eap_status_ok)
hgs
parents:
diff changeset
   482
					{
hgs
parents:
diff changeset
   483
						EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   484
							iTools,
hgs
parents:
diff changeset
   485
							TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   486
							(EAPL("ERROR: CEapServerProcessHandler::RunL(): tmpEapPlugin->configure() failed, this=0x%08x, status=%d=%s\n"),
hgs
parents:
diff changeset
   487
							this,
hgs
parents:
diff changeset
   488
							status,
hgs
parents:
diff changeset
   489
							eap_status_string_c::get_status_string(status)));
hgs
parents:
diff changeset
   490
hgs
parents:
diff changeset
   491
						User::Leave(iTools->convert_eapol_error_to_am_error(EAP_STATUS_RETURN(iTools, status)));
hgs
parents:
diff changeset
   492
					}
hgs
parents:
diff changeset
   493
hgs
parents:
diff changeset
   494
					iEapPlugin = tmpEapPlugin;
hgs
parents:
diff changeset
   495
hgs
parents:
diff changeset
   496
					CleanupStack::Pop(tmpEapPlugin);
hgs
parents:
diff changeset
   497
				}
hgs
parents:
diff changeset
   498
				else
hgs
parents:
diff changeset
   499
				{
hgs
parents:
diff changeset
   500
					EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   501
						iTools,
hgs
parents:
diff changeset
   502
						TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   503
						(EAPL("ERROR: CEapServerProcessHandler::RunL(): EEapPluginNew, iEapPlugin is NULL\n")));
hgs
parents:
diff changeset
   504
				}
hgs
parents:
diff changeset
   505
			}
hgs
parents:
diff changeset
   506
hgs
parents:
diff changeset
   507
			break;
hgs
parents:
diff changeset
   508
hgs
parents:
diff changeset
   509
		case EEapSettingsNew:
hgs
parents:
diff changeset
   510
hgs
parents:
diff changeset
   511
			{
hgs
parents:
diff changeset
   512
				EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   513
					iTools,
hgs
parents:
diff changeset
   514
					TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   515
					(EAPL("CEapServerProcessHandler::RunL() EEapSettingsNew\n")));
hgs
parents:
diff changeset
   516
hgs
parents:
diff changeset
   517
				CEapSettingsIf * tmpEapSettings = CEapSettingsIf::new_CEapSettingsIf(iTools);
hgs
parents:
diff changeset
   518
hgs
parents:
diff changeset
   519
				if (tmpEapSettings != 0)
hgs
parents:
diff changeset
   520
				{
hgs
parents:
diff changeset
   521
					CleanupStack::PushL(tmpEapSettings);
hgs
parents:
diff changeset
   522
hgs
parents:
diff changeset
   523
					if (tmpEapSettings->get_is_valid() == false)
hgs
parents:
diff changeset
   524
					{
hgs
parents:
diff changeset
   525
						EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   526
							iTools,
hgs
parents:
diff changeset
   527
							TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   528
							(EAPL("ERROR: CEapServerProcessHandler::RunL(): CEapSettingsIf::new_CEapSettingsIf() failed, this=0x%08x\n"),
hgs
parents:
diff changeset
   529
							this));
hgs
parents:
diff changeset
   530
hgs
parents:
diff changeset
   531
						User::Leave(iTools->convert_eapol_error_to_am_error(EAP_STATUS_RETURN(iTools, eap_status_allocation_error)));
hgs
parents:
diff changeset
   532
					}
hgs
parents:
diff changeset
   533
hgs
parents:
diff changeset
   534
					tmpEapSettings->set_partner(this);
hgs
parents:
diff changeset
   535
hgs
parents:
diff changeset
   536
					const void * const aData = reinterpret_cast<const void *>(message->GetData()->Ptr());
hgs
parents:
diff changeset
   537
					const TInt aLength = message->GetData()->Size();
hgs
parents:
diff changeset
   538
hgs
parents:
diff changeset
   539
					const eap_variable_data_c client_configuration(
hgs
parents:
diff changeset
   540
						iTools,
hgs
parents:
diff changeset
   541
						aData,
hgs
parents:
diff changeset
   542
						aLength,
hgs
parents:
diff changeset
   543
						false,
hgs
parents:
diff changeset
   544
						false);
hgs
parents:
diff changeset
   545
					if (client_configuration.get_is_valid() == false)
hgs
parents:
diff changeset
   546
					{
hgs
parents:
diff changeset
   547
						EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   548
							iTools,
hgs
parents:
diff changeset
   549
							TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   550
							(EAPL("ERROR: CEapServerProcessHandler::RunL(): eap_variable_data_c client_configuration() failed, this=0x%08x\n"),
hgs
parents:
diff changeset
   551
							this));
hgs
parents:
diff changeset
   552
hgs
parents:
diff changeset
   553
						User::Leave(iTools->convert_eapol_error_to_am_error(EAP_STATUS_RETURN(iTools, eap_status_allocation_error)));
hgs
parents:
diff changeset
   554
					}
hgs
parents:
diff changeset
   555
hgs
parents:
diff changeset
   556
					status = tmpEapSettings->configure(&client_configuration);
hgs
parents:
diff changeset
   557
					if (status != eap_status_ok)
hgs
parents:
diff changeset
   558
					{
hgs
parents:
diff changeset
   559
						EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   560
							iTools,
hgs
parents:
diff changeset
   561
							TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   562
							(EAPL("ERROR: CEapServerProcessHandler::RunL(): tmpEapSettings->configure() failed, this=0x%08x, status=%d=%s\n"),
hgs
parents:
diff changeset
   563
							this,
hgs
parents:
diff changeset
   564
							status,
hgs
parents:
diff changeset
   565
							eap_status_string_c::get_status_string(status)));
hgs
parents:
diff changeset
   566
hgs
parents:
diff changeset
   567
						User::Leave(iTools->convert_eapol_error_to_am_error(EAP_STATUS_RETURN(iTools, status)));
hgs
parents:
diff changeset
   568
					}
hgs
parents:
diff changeset
   569
hgs
parents:
diff changeset
   570
					iEapSettings = tmpEapSettings;
hgs
parents:
diff changeset
   571
hgs
parents:
diff changeset
   572
					CleanupStack::Pop(tmpEapSettings);
hgs
parents:
diff changeset
   573
				}
hgs
parents:
diff changeset
   574
				else
hgs
parents:
diff changeset
   575
				{
hgs
parents:
diff changeset
   576
					EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   577
						iTools,
hgs
parents:
diff changeset
   578
						TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   579
						(EAPL("ERROR: CEapServerProcessHandler::RunL(): EEapSettingsNew, iEapSettings is NULL\n")));
hgs
parents:
diff changeset
   580
				}
hgs
parents:
diff changeset
   581
			}
hgs
parents:
diff changeset
   582
hgs
parents:
diff changeset
   583
			break;
hgs
parents:
diff changeset
   584
49
hgs
parents: 36
diff changeset
   585
        case EWapiCoreIfNew:
hgs
parents: 36
diff changeset
   586
            {
26
hgs
parents:
diff changeset
   587
	            EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   588
	                iTools,
hgs
parents:
diff changeset
   589
	                TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   590
	                (EAPL("CEapServerProcessHandler::RunL() EWapiCoreIfNew\n")));
hgs
parents:
diff changeset
   591
49
hgs
parents: 36
diff changeset
   592
                TRAPD( err, iWapiCore = CWapiCoreIf::NewL(iTools, this));
hgs
parents: 36
diff changeset
   593
hgs
parents: 36
diff changeset
   594
				EAP_UNREFERENCED_PARAMETER(err); // Only trace uses this.
26
hgs
parents:
diff changeset
   595
hgs
parents:
diff changeset
   596
				EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   597
					iTools,
hgs
parents:
diff changeset
   598
					TRACE_FLAGS_DEFAULT,
49
hgs
parents: 36
diff changeset
   599
					(EAPL("CEapServerProcessHandler::RunL() EWapiCoreIfNew - iWapiCore = 0x%08x, err=%i.\n"),
hgs
parents: 36
diff changeset
   600
					iWapiCore,
hgs
parents: 36
diff changeset
   601
					err));
26
hgs
parents:
diff changeset
   602
hgs
parents:
diff changeset
   603
	            break;
49
hgs
parents: 36
diff changeset
   604
            }
26
hgs
parents:
diff changeset
   605
49
hgs
parents: 36
diff changeset
   606
        case EWapiSettingsNew:
hgs
parents: 36
diff changeset
   607
            {
26
hgs
parents:
diff changeset
   608
hgs
parents:
diff changeset
   609
	            EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   610
	                iTools,
hgs
parents:
diff changeset
   611
	                TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   612
	                (EAPL("CEapServerProcessHandler::RunL() EWapiSettingsNew\n")));
hgs
parents:
diff changeset
   613
49
hgs
parents: 36
diff changeset
   614
	            TRAPD( err, iWapiSettings = CWapiSettingsIf::NewL(iTools, this));
hgs
parents: 36
diff changeset
   615
hgs
parents: 36
diff changeset
   616
				EAP_UNREFERENCED_PARAMETER(err); // Only trace uses this.
26
hgs
parents:
diff changeset
   617
hgs
parents:
diff changeset
   618
				EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   619
					iTools,
hgs
parents:
diff changeset
   620
					TRACE_FLAGS_DEFAULT,
49
hgs
parents: 36
diff changeset
   621
					(EAPL("CEapServerProcessHandler::RunL() EWapiSettingsNew - iWapiSettings = 0x%08x, err=%i.\n"),
hgs
parents: 36
diff changeset
   622
					iWapiSettings,
hgs
parents: 36
diff changeset
   623
					err));
26
hgs
parents:
diff changeset
   624
	            break;
49
hgs
parents: 36
diff changeset
   625
            }
26
hgs
parents:
diff changeset
   626
	            
hgs
parents:
diff changeset
   627
        case EEapPacStoreNew:
hgs
parents:
diff changeset
   628
hgs
parents:
diff changeset
   629
			{
hgs
parents:
diff changeset
   630
				EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   631
					iTools,
hgs
parents:
diff changeset
   632
					TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   633
					(EAPL("CEapServerProcessHandler::RunL() EEapPacStoreNew\n")));
hgs
parents:
diff changeset
   634
hgs
parents:
diff changeset
   635
#if defined(USE_FAST_EAP_TYPE)
hgs
parents:
diff changeset
   636
hgs
parents:
diff changeset
   637
				CPacStoreIf * tmpPacStore = CPacStoreIf::new_CPacStoreIf(
hgs
parents:
diff changeset
   638
					iTools,
hgs
parents:
diff changeset
   639
					ETrue,
hgs
parents:
diff changeset
   640
					0,
hgs
parents:
diff changeset
   641
					this);
hgs
parents:
diff changeset
   642
hgs
parents:
diff changeset
   643
				if (tmpPacStore != 0)
hgs
parents:
diff changeset
   644
				{
hgs
parents:
diff changeset
   645
					CleanupStack::PushL(tmpPacStore);
hgs
parents:
diff changeset
   646
hgs
parents:
diff changeset
   647
					if (tmpPacStore->get_is_valid() == false)
hgs
parents:
diff changeset
   648
					{
hgs
parents:
diff changeset
   649
						EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   650
							iTools,
hgs
parents:
diff changeset
   651
							TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   652
							(EAPL("ERROR: CEapServerProcessHandler::RunL(): CPacStoreIf::new_CPacStoreIf() failed, this=0x%08x\n"),
hgs
parents:
diff changeset
   653
							this));
hgs
parents:
diff changeset
   654
hgs
parents:
diff changeset
   655
						User::Leave(iTools->convert_eapol_error_to_am_error(EAP_STATUS_RETURN(iTools, eap_status_allocation_error)));
hgs
parents:
diff changeset
   656
					}
hgs
parents:
diff changeset
   657
hgs
parents:
diff changeset
   658
					const void * const aData = reinterpret_cast<const void *>(message->GetData()->Ptr());
hgs
parents:
diff changeset
   659
					const TInt aLength = message->GetData()->Size();
hgs
parents:
diff changeset
   660
hgs
parents:
diff changeset
   661
					const eap_variable_data_c client_configuration(
hgs
parents:
diff changeset
   662
						iTools,
hgs
parents:
diff changeset
   663
						aData,
hgs
parents:
diff changeset
   664
						aLength,
hgs
parents:
diff changeset
   665
						false,
hgs
parents:
diff changeset
   666
						false);
hgs
parents:
diff changeset
   667
					if (client_configuration.get_is_valid() == false)
hgs
parents:
diff changeset
   668
					{
hgs
parents:
diff changeset
   669
						EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   670
							iTools,
hgs
parents:
diff changeset
   671
							TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   672
							(EAPL("ERROR: CEapServerProcessHandler::RunL(): eap_variable_data_c client_configuration() failed, this=0x%08x\n"),
hgs
parents:
diff changeset
   673
							this));
hgs
parents:
diff changeset
   674
hgs
parents:
diff changeset
   675
						User::Leave(iTools->convert_eapol_error_to_am_error(EAP_STATUS_RETURN(iTools, eap_status_allocation_error)));
hgs
parents:
diff changeset
   676
					}
hgs
parents:
diff changeset
   677
hgs
parents:
diff changeset
   678
					status = tmpPacStore->configure(&client_configuration);
hgs
parents:
diff changeset
   679
					if (status != eap_status_ok)
hgs
parents:
diff changeset
   680
					{
hgs
parents:
diff changeset
   681
						EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   682
							iTools,
hgs
parents:
diff changeset
   683
							TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   684
							(EAPL("ERROR: CEapServerProcessHandler::RunL(): tmpPacStore->configure() failed, this=0x%08x, status=%d=%s\n"),
hgs
parents:
diff changeset
   685
							this,
hgs
parents:
diff changeset
   686
							status,
hgs
parents:
diff changeset
   687
							eap_status_string_c::get_status_string(status)));
hgs
parents:
diff changeset
   688
hgs
parents:
diff changeset
   689
						User::Leave(iTools->convert_eapol_error_to_am_error(EAP_STATUS_RETURN(iTools, status)));
hgs
parents:
diff changeset
   690
					}
hgs
parents:
diff changeset
   691
hgs
parents:
diff changeset
   692
					iPacStore = tmpPacStore;
hgs
parents:
diff changeset
   693
hgs
parents:
diff changeset
   694
					CleanupStack::Pop(tmpPacStore);
hgs
parents:
diff changeset
   695
				}
hgs
parents:
diff changeset
   696
				else
hgs
parents:
diff changeset
   697
				{
hgs
parents:
diff changeset
   698
					EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   699
						iTools,
hgs
parents:
diff changeset
   700
						TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   701
						(EAPL("ERROR: CEapServerProcessHandler::RunL(): EEapPacStoreNew, iPacStore is NULL\n")));
hgs
parents:
diff changeset
   702
				}
hgs
parents:
diff changeset
   703
hgs
parents:
diff changeset
   704
#endif //#if defined(USE_FAST_EAP_TYPE)
hgs
parents:
diff changeset
   705
hgs
parents:
diff changeset
   706
			}
hgs
parents:
diff changeset
   707
hgs
parents:
diff changeset
   708
            break;
hgs
parents:
diff changeset
   709
hgs
parents:
diff changeset
   710
        case EEapCoreProcessData:
hgs
parents:
diff changeset
   711
hgs
parents:
diff changeset
   712
            EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   713
                iTools,
hgs
parents:
diff changeset
   714
                TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   715
                (EAPL("CEapServerProcessHandler::RunL() EEapCoreProcessData\n")));
hgs
parents:
diff changeset
   716
hgs
parents:
diff changeset
   717
            if (iEapCore !=0)
hgs
parents:
diff changeset
   718
            {
hgs
parents:
diff changeset
   719
                void* aData = reinterpret_cast<void *>(const_cast<TUint8 *>(message->GetData()->Ptr()));
hgs
parents:
diff changeset
   720
                TInt aLength = message->GetData()->Size();
49
hgs
parents: 36
diff changeset
   721
                status = iEapCore->process_data(aData, aLength);
26
hgs
parents:
diff changeset
   722
            }
hgs
parents:
diff changeset
   723
            else
hgs
parents:
diff changeset
   724
            {
hgs
parents:
diff changeset
   725
                EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   726
                    iTools,
hgs
parents:
diff changeset
   727
                    TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   728
                    (EAPL("ERROR: CEapServerProcessHandler::RunL(): EEapCoreProcessData, iEapCore is NULL\n")));
hgs
parents:
diff changeset
   729
            }
hgs
parents:
diff changeset
   730
hgs
parents:
diff changeset
   731
            break;
hgs
parents:
diff changeset
   732
hgs
parents:
diff changeset
   733
        case EEapPacStoreProcessData:
hgs
parents:
diff changeset
   734
hgs
parents:
diff changeset
   735
			EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   736
				iTools,
hgs
parents:
diff changeset
   737
				TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   738
				(EAPL("CEapServerProcessHandler::RunL() EEapPacStoreProcessData\n")));
hgs
parents:
diff changeset
   739
hgs
parents:
diff changeset
   740
#if defined(USE_FAST_EAP_TYPE)
hgs
parents:
diff changeset
   741
			if (iPacStore !=0)
hgs
parents:
diff changeset
   742
			{
hgs
parents:
diff changeset
   743
				void* aData = reinterpret_cast<void *>(const_cast<TUint8 *>(message->GetData()->Ptr()));
hgs
parents:
diff changeset
   744
				TInt aLength = message->GetData()->Size();
49
hgs
parents: 36
diff changeset
   745
                status = iPacStore->process_data(aData, aLength);
26
hgs
parents:
diff changeset
   746
			}
hgs
parents:
diff changeset
   747
			else
hgs
parents:
diff changeset
   748
			{
hgs
parents:
diff changeset
   749
				EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   750
					iTools,
hgs
parents:
diff changeset
   751
					TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   752
					(EAPL("ERROR: CEapServerProcessHandler::RunL(): EEapPacStoreProcessData, iPacStore is NULL\n")));
hgs
parents:
diff changeset
   753
			}
hgs
parents:
diff changeset
   754
#endif //#if defined(USE_FAST_EAP_TYPE)
hgs
parents:
diff changeset
   755
			break;
hgs
parents:
diff changeset
   756
hgs
parents:
diff changeset
   757
		case EEapPluginProcessData:
hgs
parents:
diff changeset
   758
hgs
parents:
diff changeset
   759
			EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   760
				iTools,
hgs
parents:
diff changeset
   761
				TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   762
				(EAPL("CEapServerProcessHandler::RunL() EEapPluginProcessData\n")));
hgs
parents:
diff changeset
   763
hgs
parents:
diff changeset
   764
			if (iEapPlugin !=0)
hgs
parents:
diff changeset
   765
			{
hgs
parents:
diff changeset
   766
				void* aData = reinterpret_cast<void *>(const_cast<TUint8 *>(message->GetData()->Ptr()));
hgs
parents:
diff changeset
   767
				TInt aLength = message->GetData()->Size();
49
hgs
parents: 36
diff changeset
   768
                status = iEapPlugin->process_data(aData, aLength);
26
hgs
parents:
diff changeset
   769
			}
hgs
parents:
diff changeset
   770
			else
hgs
parents:
diff changeset
   771
			{
hgs
parents:
diff changeset
   772
				EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   773
					iTools,
hgs
parents:
diff changeset
   774
					TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   775
					(EAPL("ERROR: CEapServerProcessHandler::RunL(): EEapPluginProcessData, iEapPlugin is NULL\n")));
hgs
parents:
diff changeset
   776
			}
hgs
parents:
diff changeset
   777
hgs
parents:
diff changeset
   778
			break;
hgs
parents:
diff changeset
   779
hgs
parents:
diff changeset
   780
		case EEapSettingsProcessData:
hgs
parents:
diff changeset
   781
hgs
parents:
diff changeset
   782
			EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   783
				iTools,
hgs
parents:
diff changeset
   784
				TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   785
				(EAPL("CEapServerProcessHandler::RunL() EEapSettingsProcessData\n")));
hgs
parents:
diff changeset
   786
hgs
parents:
diff changeset
   787
			if (iEapSettings !=0)
hgs
parents:
diff changeset
   788
			{
hgs
parents:
diff changeset
   789
				void* aData = reinterpret_cast<void *>(const_cast<TUint8 *>(message->GetData()->Ptr()));
hgs
parents:
diff changeset
   790
				TInt aLength = message->GetData()->Size();
49
hgs
parents: 36
diff changeset
   791
                status = iEapSettings->process_data(aData, aLength);
26
hgs
parents:
diff changeset
   792
			}
hgs
parents:
diff changeset
   793
			else
hgs
parents:
diff changeset
   794
			{
hgs
parents:
diff changeset
   795
				EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   796
					iTools,
hgs
parents:
diff changeset
   797
					TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   798
					(EAPL("ERROR: CEapServerProcessHandler::RunL(): EEapSettingsProcessData, iEapSettings is NULL\n")));
hgs
parents:
diff changeset
   799
			}
hgs
parents:
diff changeset
   800
hgs
parents:
diff changeset
   801
			break;
hgs
parents:
diff changeset
   802
hgs
parents:
diff changeset
   803
		case EWapiCoreProcessData:
hgs
parents:
diff changeset
   804
hgs
parents:
diff changeset
   805
            EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   806
                iTools,
hgs
parents:
diff changeset
   807
                TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   808
                (EAPL("CEapServerProcessHandler::RunL() EWapiCoreProcessData\n")));
hgs
parents:
diff changeset
   809
hgs
parents:
diff changeset
   810
            if (iWapiCore !=0)
hgs
parents:
diff changeset
   811
            {
hgs
parents:
diff changeset
   812
                void* aData = reinterpret_cast<void *>(const_cast<TUint8 *>(message->GetData()->Ptr()));
hgs
parents:
diff changeset
   813
                TInt aLength = message->GetData()->Size();
49
hgs
parents: 36
diff changeset
   814
                status = iWapiCore->process_data(aData, aLength);
26
hgs
parents:
diff changeset
   815
            }
hgs
parents:
diff changeset
   816
            else
hgs
parents:
diff changeset
   817
            {
hgs
parents:
diff changeset
   818
                EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   819
                    iTools,
hgs
parents:
diff changeset
   820
                    TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   821
                    (EAPL("ERROR: CEapServerProcessHandler::RunL(): EWapiCoreProcessData, iWapiCore is NULL\n")));
hgs
parents:
diff changeset
   822
            }
hgs
parents:
diff changeset
   823
            break;
hgs
parents:
diff changeset
   824
hgs
parents:
diff changeset
   825
		case EWapiSettingsProcessData:
hgs
parents:
diff changeset
   826
hgs
parents:
diff changeset
   827
            EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   828
                iTools,
hgs
parents:
diff changeset
   829
                TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   830
                (EAPL("CEapServerProcessHandler::RunL() EWapiSettingsProcessData\n")));
hgs
parents:
diff changeset
   831
hgs
parents:
diff changeset
   832
            if (iWapiSettings !=0)
hgs
parents:
diff changeset
   833
            {
hgs
parents:
diff changeset
   834
                void* aData = reinterpret_cast<void *>(const_cast<TUint8 *>(message->GetData()->Ptr()));
hgs
parents:
diff changeset
   835
                TInt aLength = message->GetData()->Size();
49
hgs
parents: 36
diff changeset
   836
                status = iWapiSettings->process_data(aData, aLength);
26
hgs
parents:
diff changeset
   837
            }
hgs
parents:
diff changeset
   838
            else
hgs
parents:
diff changeset
   839
            {
hgs
parents:
diff changeset
   840
                EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   841
                    iTools,
hgs
parents:
diff changeset
   842
                    TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   843
                    (EAPL("ERROR: CEapServerProcessHandler::RunL(): EWapiSettingsProcessData, iWapiSettings is NULL\n")));
hgs
parents:
diff changeset
   844
            }
hgs
parents:
diff changeset
   845
hgs
parents:
diff changeset
   846
            break;
hgs
parents:
diff changeset
   847
hgs
parents:
diff changeset
   848
		case EEapCoreSendData:
hgs
parents:
diff changeset
   849
		case EEapPluginSendData:
hgs
parents:
diff changeset
   850
		case EEapSettingsSendData:
hgs
parents:
diff changeset
   851
        case EEapPacStoreSendData:
hgs
parents:
diff changeset
   852
        case EWapiCoreSendData:
hgs
parents:
diff changeset
   853
        case EWapiSettingsSendData:
hgs
parents:
diff changeset
   854
			if (message->GetRequestType() == EEapCoreSendData)
hgs
parents:
diff changeset
   855
			{
hgs
parents:
diff changeset
   856
				EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   857
					iTools,
hgs
parents:
diff changeset
   858
					TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   859
					(EAPL("CEapServerProcessHandler::RunL() EEapCoreSendData\n")));
hgs
parents:
diff changeset
   860
			}
hgs
parents:
diff changeset
   861
			else if (message->GetRequestType() == EEapPluginSendData)
hgs
parents:
diff changeset
   862
			{
hgs
parents:
diff changeset
   863
				EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   864
					iTools,
hgs
parents:
diff changeset
   865
					TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   866
					(EAPL("CEapServerProcessHandler::RunL() EEapPluginSendData\n")));
hgs
parents:
diff changeset
   867
			}
hgs
parents:
diff changeset
   868
			else if (message->GetRequestType() == EEapSettingsSendData)
hgs
parents:
diff changeset
   869
			{
hgs
parents:
diff changeset
   870
				EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   871
					iTools,
hgs
parents:
diff changeset
   872
					TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   873
					(EAPL("CEapServerProcessHandler::RunL() EEapSettingsSendData\n")));
hgs
parents:
diff changeset
   874
			}
hgs
parents:
diff changeset
   875
            else if (message->GetRequestType() == EEapPacStoreSendData)
hgs
parents:
diff changeset
   876
            {
hgs
parents:
diff changeset
   877
                EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   878
                    iTools,
hgs
parents:
diff changeset
   879
                    TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   880
                    (EAPL("CEapServerProcessHandler::RunL() EEapPacStoreSendData\n")));
hgs
parents:
diff changeset
   881
            }
hgs
parents:
diff changeset
   882
            else if (message->GetRequestType() == EWapiCoreSendData)
hgs
parents:
diff changeset
   883
            {
hgs
parents:
diff changeset
   884
                EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   885
                    iTools,
hgs
parents:
diff changeset
   886
                    TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   887
                    (EAPL("CEapServerProcessHandler::RunL() EWapiCoreSendData\n")));
hgs
parents:
diff changeset
   888
            }
hgs
parents:
diff changeset
   889
            else if (message->GetRequestType() == EWapiSettingsSendData)
hgs
parents:
diff changeset
   890
            {
hgs
parents:
diff changeset
   891
                EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   892
                    iTools,
hgs
parents:
diff changeset
   893
                    TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   894
                    (EAPL("CEapServerProcessHandler::RunL() EWapiSettingsSendData\n")));
hgs
parents:
diff changeset
   895
            }
49
hgs
parents: 36
diff changeset
   896
26
hgs
parents:
diff changeset
   897
			EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   898
				iTools,
hgs
parents:
diff changeset
   899
				TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   900
				(EAPL("CEapServerProcessHandler::RunL(): iClient=0x%08x\n"),
hgs
parents:
diff changeset
   901
				iClient));
hgs
parents:
diff changeset
   902
hgs
parents:
diff changeset
   903
			if (iClient != 0)
hgs
parents:
diff changeset
   904
			{
hgs
parents:
diff changeset
   905
				status = iClient->SendData(message);
hgs
parents:
diff changeset
   906
				if (status != eap_status_ok)
hgs
parents:
diff changeset
   907
				{
hgs
parents:
diff changeset
   908
					EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   909
						iTools,
hgs
parents:
diff changeset
   910
						TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   911
						(EAPL("ERROR: CEapServerProcessHandler::RunL(): SendData() failed, iClient=0x%08x, status=%d=%s\n"),
hgs
parents:
diff changeset
   912
						iClient,
hgs
parents:
diff changeset
   913
						status,
hgs
parents:
diff changeset
   914
						eap_status_string_c::get_status_string(status)));
hgs
parents:
diff changeset
   915
hgs
parents:
diff changeset
   916
					// We do not return here. Even the iClient->SendData() fails we run this function to the end.
hgs
parents:
diff changeset
   917
				}
hgs
parents:
diff changeset
   918
			}
hgs
parents:
diff changeset
   919
			else
hgs
parents:
diff changeset
   920
			{
hgs
parents:
diff changeset
   921
				EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   922
					iTools,
hgs
parents:
diff changeset
   923
					TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   924
					(EAPL("ERROR: CEapServerProcessHandler::RunL(): EEap*SendData, iClient is NULL\n")));
hgs
parents:
diff changeset
   925
			}
hgs
parents:
diff changeset
   926
hgs
parents:
diff changeset
   927
			break;
hgs
parents:
diff changeset
   928
hgs
parents:
diff changeset
   929
		default:
hgs
parents:
diff changeset
   930
hgs
parents:
diff changeset
   931
			EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
   932
				iTools,
hgs
parents:
diff changeset
   933
				TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
   934
				(EAPL("ERROR: CEapServerProcessHandler::RunL(): unknown message->GetRequestType()=%d=%s\n"),
hgs
parents:
diff changeset
   935
				message->GetRequestType(),
hgs
parents:
diff changeset
   936
				EapServerStrings::GetEapRequestsString(message->GetRequestType())));
hgs
parents:
diff changeset
   937
			break;
hgs
parents:
diff changeset
   938
hgs
parents:
diff changeset
   939
		} // switch()
hgs
parents:
diff changeset
   940
49
hgs
parents: 36
diff changeset
   941
		// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
hgs
parents: 36
diff changeset
   942
hgs
parents: 36
diff changeset
   943
		EAP_TRACE_DEBUG(
hgs
parents: 36
diff changeset
   944
			iTools,
hgs
parents: 36
diff changeset
   945
			TRACE_FLAGS_DEFAULT,
hgs
parents: 36
diff changeset
   946
			(EAPL("CEapServerProcessHandler::RunL(): iProcessMessage=0x%08x, aSendMessage=0x%08x, status=%d=%s.\n"),
hgs
parents: 36
diff changeset
   947
			iProcessMessage,
hgs
parents: 36
diff changeset
   948
			aSendMessage,
hgs
parents: 36
diff changeset
   949
			status,
hgs
parents: 36
diff changeset
   950
			eap_status_string_c::get_status_string(status)));
hgs
parents: 36
diff changeset
   951
hgs
parents: 36
diff changeset
   952
		// First send-message handled, remove the message.
hgs
parents: 36
diff changeset
   953
		// iClient->SendData() call may fail, then we do not remove the message.
hgs
parents: 36
diff changeset
   954
		if (aSendMessage != 0
hgs
parents: 36
diff changeset
   955
			&& status == eap_status_ok)
26
hgs
parents:
diff changeset
   956
		{
49
hgs
parents: 36
diff changeset
   957
			iEapSendMessageQueue->DeleteFirstMessage(aSendMessage);
26
hgs
parents:
diff changeset
   958
		}
49
hgs
parents: 36
diff changeset
   959
		else if (aSendMessage == 0
hgs
parents: 36
diff changeset
   960
			&& (status == eap_status_ok
hgs
parents: 36
diff changeset
   961
				|| status != eap_status_pending_request))
hgs
parents: 36
diff changeset
   962
		{
hgs
parents: 36
diff changeset
   963
			// First process-message handled, remove the message.
hgs
parents: 36
diff changeset
   964
			// Note the pending message will be removed after the operation has been completed in the SendData() function.
hgs
parents: 36
diff changeset
   965
			iEapProcessMessageQueue->DeleteFirstMessage(iProcessMessage);
hgs
parents: 36
diff changeset
   966
			iProcessMessage = 0;
hgs
parents: 36
diff changeset
   967
		}
hgs
parents: 36
diff changeset
   968
hgs
parents: 36
diff changeset
   969
		// Send-message must be null after this step. The message is is still in the iEapSendMessageQueue if send-operation failed.
hgs
parents: 36
diff changeset
   970
		aSendMessage = 0;
26
hgs
parents:
diff changeset
   971
hgs
parents:
diff changeset
   972
	} // if ()
hgs
parents:
diff changeset
   973
49
hgs
parents: 36
diff changeset
   974
	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
hgs
parents: 36
diff changeset
   975
hgs
parents: 36
diff changeset
   976
	EAP_TRACE_DEBUG(
hgs
parents: 36
diff changeset
   977
		iTools,
hgs
parents: 36
diff changeset
   978
		TRACE_FLAGS_DEFAULT,
hgs
parents: 36
diff changeset
   979
		(EAPL("CEapServerProcessHandler::RunL(): iProcessMessage=0x%08x, aSendMessage=0x%08x\n"),
hgs
parents: 36
diff changeset
   980
		iProcessMessage,
hgs
parents: 36
diff changeset
   981
		aSendMessage));
hgs
parents: 36
diff changeset
   982
hgs
parents: 36
diff changeset
   983
	EAP_TRACE_DEBUG(
hgs
parents: 36
diff changeset
   984
		iTools,
hgs
parents: 36
diff changeset
   985
		TRACE_FLAGS_DEFAULT,
hgs
parents: 36
diff changeset
   986
		(EAPL("CEapServerProcessHandler::RunL(): iEapSendMessageQueue->GetFirstMessage()=0x%08x, iEapProcessMessageQueue->GetFirstMessage()=0x%08x\n"),
hgs
parents: 36
diff changeset
   987
		iEapSendMessageQueue->GetFirstMessage(),
hgs
parents: 36
diff changeset
   988
		iEapProcessMessageQueue->GetFirstMessage()));
hgs
parents: 36
diff changeset
   989
hgs
parents: 36
diff changeset
   990
	if (iEapSendMessageQueue->GetFirstMessage() != 0)
26
hgs
parents:
diff changeset
   991
	{
hgs
parents:
diff changeset
   992
		if (iClient != NULL)
hgs
parents:
diff changeset
   993
		{
hgs
parents:
diff changeset
   994
			if (iClient->GetReceiveActive())
hgs
parents:
diff changeset
   995
			{
49
hgs
parents: 36
diff changeset
   996
				// Still send-messages waiting, activate handler.
hgs
parents: 36
diff changeset
   997
				Activate(EapServerProcessHandlerState_Send);
26
hgs
parents:
diff changeset
   998
			}
hgs
parents:
diff changeset
   999
			else
hgs
parents:
diff changeset
  1000
			{
hgs
parents:
diff changeset
  1001
				EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
  1002
					iTools,
hgs
parents:
diff changeset
  1003
					TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
  1004
					(EAPL("WARNING: CEapServerProcessHandler::RunL(): cannot call User::RequestComplete() because no receive is active.\n")));
hgs
parents:
diff changeset
  1005
			}
hgs
parents:
diff changeset
  1006
		}
hgs
parents:
diff changeset
  1007
	}
49
hgs
parents: 36
diff changeset
  1008
	else if (iProcessMessage == 0
hgs
parents: 36
diff changeset
  1009
		&& iEapProcessMessageQueue->GetFirstMessage() != 0)
26
hgs
parents:
diff changeset
  1010
	{
hgs
parents:
diff changeset
  1011
		EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
  1012
			iTools,
hgs
parents:
diff changeset
  1013
			TRACE_FLAGS_DEFAULT,
49
hgs
parents: 36
diff changeset
  1014
			(EAPL("CEapServerProcessHandler::RunL(): Still messages waiting.\n")));
hgs
parents: 36
diff changeset
  1015
hgs
parents: 36
diff changeset
  1016
		if (iClient != NULL)
hgs
parents: 36
diff changeset
  1017
		{
hgs
parents: 36
diff changeset
  1018
			// Still process-messages waiting, activate handler.
hgs
parents: 36
diff changeset
  1019
			Activate(EapServerProcessHandlerState_All);
hgs
parents: 36
diff changeset
  1020
		}
hgs
parents: 36
diff changeset
  1021
	}
hgs
parents: 36
diff changeset
  1022
	else if (iProcessMessage == 0)
hgs
parents: 36
diff changeset
  1023
	{
hgs
parents: 36
diff changeset
  1024
		EAP_TRACE_DEBUG(
hgs
parents: 36
diff changeset
  1025
			iTools,
hgs
parents: 36
diff changeset
  1026
			TRACE_FLAGS_DEFAULT,
hgs
parents: 36
diff changeset
  1027
			(EAPL("CEapServerProcessHandler::RunL(): No new messages to process. Current message iProcessMessage=0x%08x\n"),
hgs
parents: 36
diff changeset
  1028
			iProcessMessage));
hgs
parents: 36
diff changeset
  1029
hgs
parents: 36
diff changeset
  1030
		TInt error = iClient->CompleteReadyHandler(this);
hgs
parents: 36
diff changeset
  1031
		if (error != KErrNone)
hgs
parents: 36
diff changeset
  1032
		{
hgs
parents: 36
diff changeset
  1033
			EAP_TRACE_DEBUG(
hgs
parents: 36
diff changeset
  1034
				iTools,
hgs
parents: 36
diff changeset
  1035
				TRACE_FLAGS_DEFAULT,
hgs
parents: 36
diff changeset
  1036
				(EAPL("ERROR: CEapServerProcessHandler::RunL(): iClient->CompleteReadyHandler() failed, error=%d\n"),
hgs
parents: 36
diff changeset
  1037
				error));
hgs
parents: 36
diff changeset
  1038
		}
26
hgs
parents:
diff changeset
  1039
	}
hgs
parents:
diff changeset
  1040
hgs
parents:
diff changeset
  1041
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
  1042
		iTools,
hgs
parents:
diff changeset
  1043
		TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
  1044
		(EAPL("=end======================================================================\n")));
hgs
parents:
diff changeset
  1045
}
hgs
parents:
diff changeset
  1046
hgs
parents:
diff changeset
  1047
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1048
hgs
parents:
diff changeset
  1049
void CEapServerProcessHandler::DoCancel()
hgs
parents:
diff changeset
  1050
{
hgs
parents:
diff changeset
  1051
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
  1052
		iTools,
hgs
parents:
diff changeset
  1053
		TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
  1054
		(EAPL("CEapServerProcessHandler::DoCancel(): this=0x%08x\n"),
hgs
parents:
diff changeset
  1055
		this));
hgs
parents:
diff changeset
  1056
	EAP_TRACE_RETURN_STRING(iTools, "returns: CEapServerProcessHandler::DoCancel()");
hgs
parents:
diff changeset
  1057
hgs
parents:
diff changeset
  1058
}
hgs
parents:
diff changeset
  1059
hgs
parents:
diff changeset
  1060
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1061
hgs
parents:
diff changeset
  1062
TInt CEapServerProcessHandler::RunError(TInt aError)
hgs
parents:
diff changeset
  1063
{
hgs
parents:
diff changeset
  1064
	EAP_TRACE_DEBUG(
hgs
parents:
diff changeset
  1065
		iTools,
hgs
parents:
diff changeset
  1066
		TRACE_FLAGS_DEFAULT,
hgs
parents:
diff changeset
  1067
		(EAPL("CEapServerProcessHandler::RunError(): aError=%d, this=0x%08x\n"),
hgs
parents:
diff changeset
  1068
		aError,
hgs
parents:
diff changeset
  1069
		this));
hgs
parents:
diff changeset
  1070
	EAP_TRACE_RETURN_STRING(iTools, "returns: CEapServerProcessHandler::RunError()");
hgs
parents:
diff changeset
  1071
hgs
parents:
diff changeset
  1072
	Cancel();
hgs
parents:
diff changeset
  1073
hgs
parents:
diff changeset
  1074
	return aError;
hgs
parents:
diff changeset
  1075
}
hgs
parents:
diff changeset
  1076
hgs
parents:
diff changeset
  1077
//----------------------------------------------------------------------------
hgs
parents:
diff changeset
  1078
// end