sdkcreationmw/sdkruntimes/wsock/src/wsock.cpp
author rajpuroh
Wed, 21 Apr 2010 09:56:53 +0530
changeset 1 ac50fd48361b
parent 0 b26acd06ea60
permissions -rw-r--r--
Second Contribution
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
     1
/*
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
     2
* Copyright (c) 2004-2007 Nokia Corporation and/or its subsidiary(-ies).
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
     3
* All rights reserved.
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
     4
* This component and the accompanying materials are made available
1
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
0
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
     6
* which accompanies this distribution, and is available
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
     8
*
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
     9
* Initial Contributors:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    11
*
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    12
* Contributors:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    13
*
1
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
    14
* Description:
0
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    15
*
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    16
*/
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    17
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    18
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    19
#define TRACE_PREFIX "WSOCK: "
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    20
#include "wsock.h"
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    21
#include <utf.h>
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    22
#include <etelpckt.h>
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    23
#include <ApEngineConsts.h>
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    24
#include <CNetworkControllerBase.h>
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    25
#include "WinsockAgentFactory.h"
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    26
#include "WinsockProtocolFamily.h"
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    27
#include "WinsockInterfaceFactory.h"
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    28
#include "WinsockUtils.h"
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    29
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    30
_LIT(KProxyTableName,"Proxies");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    31
static const TInt KDefaultProxyPort = 8080;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    32
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    33
enum TProxyUpdateFlags
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    34
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    35
    TProxyUpdateUseProxy                = 0x00000001,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    36
    TProxyUpdateServerName              = 0x00000002,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    37
    TProxyUpdateProtocol                = 0x00000004,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    38
    TProxyUpdatePort                    = 0x00000008,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    39
    TProxyUpdateName                    = 0x00000010
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    40
};
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    41
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    42
enum TBearerUpdateFlags
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    43
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    44
    TBearerUpdateAgent                  = 0x00000001,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    45
    TBearerUpdateSocketActivityTimeout  = 0x00000002,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    46
    TBearerUpdateSessionClosedTimeout   = 0x00000004,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    47
    TBearerUpdateSocketClosedTimeout    = 0x00000008
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    48
};
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    49
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    50
enum TServiceUpdateFlags
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    51
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    52
    TServiceUpdateNetworks              = 0x00000001,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    53
    TServiceUpdateAuthPrompt            = 0x00000002,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    54
    TServiceUpdateAPN                   = 0x00000004,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    55
    TServiceUpdateAPType                = 0x00000008
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    56
};
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    57
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    58
enum TIAPUpdateFlags
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    59
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    60
    TIAPUpdateService                   = 0x00000001,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    61
    TIAPUpdateServiceType               = 0x00000002,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    62
    TIAPUpdateBearer                    = 0x00000004,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    63
    TIAPUpdateBearerType                = 0x00000008,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    64
    TIAPUpdateNetwork                   = 0x00000010
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    65
};
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    66
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    67
enum TWapIpBearerUpdateFlags
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    68
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    69
    TWapIpBearerUpdateIAP               = 0x00000001,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    70
    TWapIpBearerUpdateWspOption         = 0x00000002,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    71
    TWapIpBearerUpdateProxyPort         = 0x00000004,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    72
    TWapIpBearerUpdateSecurity          = 0x00000008,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    73
    TWapIpBearerUpdateGatewayAddress    = 0x00000010,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    74
    TWapIpBearerUpdateProxyLoginName    = 0x00000020,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    75
    TWapIpBearerUpdateProxyLoginPass    = 0x00000040
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    76
};
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    77
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    78
#ifdef _REALLY_DEBUG
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    79
extern "C" int __stdcall IsDebuggerPresent(void);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    80
void WsockAssert(const TText* s, const TText* file, TInt line)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    81
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    82
    TRACE1("Assertion failed: %s",s);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    83
    TRACE1("File: %s",file);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    84
    TRACE1("Line: %d",line);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    85
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    86
    #ifdef WSOCK_ASSERT_BREAKPOINT
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    87
    if (IsDebuggerPresent())
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    88
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    89
        __BREAKPOINT();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    90
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    91
    #endif
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    92
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    93
TInt WsockAssertSuccess(TInt err, const TText* s, const TText* file, TInt line)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    94
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    95
    if (err != KErrNone)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    96
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    97
        TRACE1("Unexpected error: %d",err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    98
        TRACE1("Expression: %s",s);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
    99
        TRACE1("File: %s",file);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   100
        TRACE1("Line: %d",line);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   101
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   102
        #ifdef WSOCK_ASSERT_BREAKPOINT
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   103
        if (IsDebuggerPresent())
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   104
        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   105
            __BREAKPOINT();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   106
        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   107
        #endif
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   108
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   109
    return err;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   110
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   111
void WsockLeave(TInt err, const TText* s, const TText* file, TInt line)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   112
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   113
    TRACE2("Leaving with error %d (%s)",err,s);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   114
    TRACE1("File: %s",file);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   115
    TRACE1("Line: %d",line);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   116
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   117
    #ifdef WSOCK_ASSERT_BREAKPOINT
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   118
    if (IsDebuggerPresent())
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   119
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   120
        __BREAKPOINT();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   121
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   122
    #endif
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   123
    User::Leave(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   124
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   125
void WsockLeaveIfError(TInt err, const TText* s, const TText* file, TInt line)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   126
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   127
    if (err != KErrNone)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   128
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   129
        TRACE1("Unexpected error: %d",err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   130
        TRACE1("Expression: %s",s);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   131
        TRACE1("File: %s",file);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   132
        TRACE1("Line: %d",line);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   133
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   134
        #ifdef WSOCK_ASSERT_BREAKPOINT
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   135
        if (IsDebuggerPresent())
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   136
        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   137
            __BREAKPOINT();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   138
        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   139
        #endif
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   140
        User::Leave(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   141
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   142
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   143
#endif // _REALLY_DEBUG
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   144
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   145
// WSOCK lock
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   146
class WsockLock
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   147
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   148
private:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   149
    TBool iLocked;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   150
    RMutex iMutex;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   151
public:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   152
    WsockLock() : iLocked(EFalse) {}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   153
    ~WsockLock() {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   154
        ASSERT(!iLocked);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   155
        if (iLocked) Unlock();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   156
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   157
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   158
    // Locks the mutex, returning KErrNone on success
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   159
    TInt Lock()
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   160
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   161
        _LIT(KMutexName, "WsockLock");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   162
        ASSERT(!iLocked);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   163
        TInt err = iMutex.CreateGlobal(KMutexName, EOwnerThread);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   164
        while (err == KErrAlreadyExists) {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   165
            err = iMutex.OpenGlobal(KMutexName, EOwnerThread);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   166
            if (err == KErrNone) {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   167
                TRACE("opened existing CommDb mutex");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   168
            } else {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   169
                TRACE("couldn't either create or open CommDb mutex, retry");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   170
                err = iMutex.CreateGlobal(KMutexName, EOwnerThread);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   171
            }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   172
        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   173
        ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   174
        if (err == KErrNone) {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   175
            iMutex.Wait();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   176
            iLocked = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   177
        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   178
        return err;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   179
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   180
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   181
    // Locks the mutex, leaves on failure
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   182
    void LockL()
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   183
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   184
        LEAVE_IF_ERROR(Lock());
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   185
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   186
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   187
    // Locks the mutex, leaves on failure, sets up cleanup callback
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   188
    void LockLC()
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   189
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   190
        LEAVE_IF_ERROR(Lock());
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   191
        CleanupStack::PushL(TCleanupItem(UnlockOnLeave,this));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   192
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   193
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   194
    // Releases the mutex
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   195
    void Unlock()
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   196
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   197
        ASSERT(iLocked);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   198
        if (iLocked) {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   199
            iLocked = EFalse;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   200
            iMutex.Signal();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   201
            iMutex.Close();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   202
        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   203
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   204
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   205
    // Cleanup callback. Unlocks WsockLock
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   206
    static void UnlockOnLeave(TAny* aPtr)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   207
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   208
        WsockLock* lock = (WsockLock*)aPtr;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   209
        lock->Unlock();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   210
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   211
};
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   212
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   213
// Cleanup callback. Rolls back the transaction
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   214
static void WsockRollbackOnLeave(TAny* aDb)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   215
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   216
    CCommsDatabase* db = (CCommsDatabase*)aDb;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   217
    db->RollbackTransaction();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   218
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   219
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   220
// Begins CommDb transaction
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   221
static void WsockBeginCommDbTransactionLC(CCommsDatabase* aDb)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   222
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   223
    TInt err = aDb->BeginTransaction();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   224
    TInt retriesLeft = KRetryCount;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   225
    while ((err == KErrLocked || err == KErrAccessDenied) && --retriesLeft)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   226
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   227
        User::After(KRetryWait);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   228
        err = aDb->BeginTransaction();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   229
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   230
    LEAVE_IF_ERROR(err); // Leaves if error
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   231
    CleanupStack::PushL(TCleanupItem(WsockRollbackOnLeave,aDb));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   232
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   233
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   234
// Checks proxy settings in CommDb. Returns ETrue if transaction needs
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   235
// to be commited. If aProxyHost is NULL, does not check the proxy values,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   236
// only makes sure that there is on and only one proxy record in CommDb.
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   237
// If we allow more than one record, Symbian HTTP framework gets confused
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   238
// what to use and more often than not uses the wrong one. Particularly,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   239
// it appears to prefer proxy records associated with OutgoingGPRS service,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   240
// ignoring LANService.
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   241
static TBool WsockCheckProxyL(CCommsDatabase* aDb,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   242
                              TUint32 aServiceId,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   243
                              TBool aUseProxy,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   244
                              const TDesC* aProxyHost,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   245
                              TUint aProxyPort)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   246
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   247
    _LIT(KProxyProtocol,"http");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   248
    _LIT(KProxyName, "Winsock Proxy Settings");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   249
    const TDesC& TableName = KProxyTableName();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   250
    const TDesC& ServiceType = KWinsockServiceType();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   251
    TRACE1("examining %S table...",&TableName);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   252
    CCommsDbTableView* view = aDb->OpenTableLC(TableName);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   253
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   254
    // Column names
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   255
    TPtrC IdColumn(COMMDB_ID);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   256
    TPtrC NameColumn(COMMDB_NAME);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   257
    TPtrC ISPColumn(PROXY_ISP);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   258
    TPtrC UseProxyColumn(PROXY_USE_PROXY_SERVER);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   259
    TPtrC ServiceTypeColumn(PROXY_SERVICE_TYPE);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   260
    TPtrC ServerNameColumn(PROXY_SERVER_NAME);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   261
    TPtrC ProtocolColumn(PROXY_PROTOCOL_NAME);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   262
    TPtrC ProxyPortColumn(PROXY_PORT_NUMBER);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   263
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   264
    // Delete everything except our record
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   265
    TInt err;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   266
    TUint32 id = 0;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   267
    TBool recordFound = EFalse;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   268
    TBool databaseUpdated  = EFalse;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   269
    if (view->GotoFirstRecord() == KErrNone)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   270
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   271
        TUint32 number = 0;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   272
        TBuf<KCommsDbSvrMaxFieldLength> text;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   273
        do
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   274
        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   275
            // This one must exist
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   276
            TRAP(err, view->ReadUintL(IdColumn, id));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   277
            if (err == KErrNone)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   278
            {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   279
                // We detect our record based on the values of "ISP"
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   280
                // and "ProxyServiceType" columns
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   281
                number = 0;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   282
                TRAP(err, view->ReadUintL(ISPColumn,number));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   283
                TRAP(err, view->ReadTextL(ServiceTypeColumn,text));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   284
                TRACE4("  %S #%d -> %d,%S",&TableName,id,number,&text);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   285
                if (err == KErrNone &&
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   286
                    text == ServiceType &&
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   287
                    number == aServiceId &&
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   288
                    !recordFound)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   289
                {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   290
                    TUint updateFlags = 0;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   291
                    if (aProxyHost)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   292
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   293
                        TBool useProxy = EFalse;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   294
                        TRAP(err, view->ReadBoolL(UseProxyColumn,useProxy));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   295
                        if (err != KErrNone || useProxy != aUseProxy)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   296
                        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   297
                            updateFlags |= TProxyUpdateUseProxy;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   298
                        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   299
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   300
                        HBufC* val = NULL;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   301
                        TRAP(err, val = view->ReadLongTextLC(ServerNameColumn);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   302
                        CleanupStack::Pop(val));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   303
                        if (err != KErrNone || *val != *aProxyHost)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   304
                        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   305
                            updateFlags |= TProxyUpdateServerName;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   306
                        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   307
                        delete val;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   308
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   309
                        TRAP(err, view->ReadUintL(ProxyPortColumn,number));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   310
                        if (err != KErrNone || number != aProxyPort)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   311
                        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   312
                            updateFlags |= TProxyUpdatePort;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   313
                        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   314
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   315
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   316
                    TRAP(err, view->ReadTextL(NameColumn,text));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   317
                    if (err != KErrNone || text != KProxyName())
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   318
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   319
                        updateFlags |= TProxyUpdateName;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   320
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   321
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   322
                    TRAP(err, view->ReadTextL(ProtocolColumn,text));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   323
                    if (err != KErrNone || text != KProxyProtocol())
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   324
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   325
                        updateFlags |= TProxyUpdateProtocol;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   326
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   327
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   328
                    if (updateFlags)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   329
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   330
                        TRACE3("updating %S #%d (flags: %08X)",&TableName,id,updateFlags);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   331
                        LEAVE_IF_ERROR(view->UpdateRecord());
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   332
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   333
                        if (updateFlags & TProxyUpdateUseProxy)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   334
                        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   335
                            TRAP(err,view->WriteBoolL(UseProxyColumn,aUseProxy));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   336
                            ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   337
                        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   338
                        if (updateFlags & TProxyUpdateServerName)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   339
                        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   340
                            TRAP(err,view->WriteLongTextL(ServerNameColumn,*aProxyHost));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   341
                            ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   342
                        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   343
                        if (updateFlags & TProxyUpdateName)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   344
                        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   345
                            TRAP(err,view->WriteTextL(NameColumn,KProxyName()));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   346
                            ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   347
                        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   348
                        if (updateFlags & TProxyUpdateProtocol)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   349
                        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   350
                            TRAP(err,view->WriteTextL(ProtocolColumn,KProxyProtocol()));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   351
                            ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   352
                        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   353
                        if (updateFlags & TProxyUpdatePort)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   354
                        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   355
                            TRAP(err,view->WriteUintL(ProxyPortColumn,aProxyPort));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   356
                            ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   357
                        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   358
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   359
                        LEAVE_IF_ERROR(view->PutRecordChanges());
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   360
                        databaseUpdated = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   361
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   362
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   363
                    recordFound = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   364
                    continue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   365
                }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   366
            }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   367
            TRACE4("  deleting proxy record: %S #%d -> %d,%S",&TableName,id,number,&text);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   368
            VERIFY_SUCCESS(view->DeleteRecord());
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   369
            databaseUpdated = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   370
        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   371
        while (view->GotoNextRecord() == KErrNone);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   372
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   373
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   374
    // Create a new entry if it doesn't exist
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   375
    if (!recordFound)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   376
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   377
        LEAVE_IF_ERROR(view->InsertRecord(id));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   378
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   379
        const TDesC& host = aProxyHost ? (*aProxyHost) : KNullDesC();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   380
        TRACE2("created %S #%d",&TableName,id);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   381
        TRAP(err,view->WriteUintL(ISPColumn,aServiceId));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   382
        ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   383
        TRAP(err,view->WriteTextL(ServiceTypeColumn,ServiceType));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   384
        ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   385
        TRAP(err,view->WriteBoolL(UseProxyColumn, aUseProxy));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   386
        ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   387
        TRAP(err,view->WriteTextL(NameColumn, KProxyName));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   388
        ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   389
        TRAP(err,view->WriteTextL(ProtocolColumn, KProxyProtocol));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   390
        ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   391
        TRAP(err,view->WriteUintL(ProxyPortColumn, aProxyPort));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   392
        ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   393
        TRAP(err,view->WriteLongTextL(ServerNameColumn, host));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   394
        ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   395
        LEAVE_IF_ERROR(view->PutRecordChanges());
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   396
        databaseUpdated = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   397
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   398
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   399
    CleanupStack::PopAndDestroy(view);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   400
    return databaseUpdated;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   401
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   402
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   403
// Shortcut for making sure that there's no garbage in the proxy settings table
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   404
static TBool WsockCheckProxyL(CCommsDatabase* aDb, TUint32 aServiceId)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   405
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   406
    return WsockCheckProxyL(aDb, aServiceId, EFalse, NULL, KDefaultProxyPort);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   407
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   408
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   409
// Makes sure our IAP is in the Network table
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   410
static TBool WsockCheckNetworkL(CCommsDatabase* aDb, TUint32& aNetworkId)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   411
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   412
    _LIT(KNetworkTable,"Network");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   413
    const TDesC& TableName = KNetworkTable();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   414
    TRACE1("examining %S table...",&TableName);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   415
    CCommsDbTableView* view = aDb->OpenTableLC(TableName);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   416
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   417
    // Column names
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   418
    TPtrC IdColumn(COMMDB_ID);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   419
    TPtrC NameColumn(COMMDB_NAME);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   420
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   421
    // Walk the table
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   422
    TInt err;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   423
    TUint32 id = 0;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   424
    TBool found = EFalse;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   425
    TBool needCommit = EFalse;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   426
    if (view->GotoFirstRecord() == KErrNone)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   427
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   428
        TBuf<KCommsDbSvrMaxFieldLength> text;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   429
        do
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   430
        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   431
            // This one must exist
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   432
            TRAPD(err, view->ReadUintL(IdColumn, id));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   433
            if (err == KErrNone)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   434
            {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   435
                TRAP(err, view->ReadTextL(NameColumn,text));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   436
                TRACE3("  %S #%d -> %S",&TableName,id,&text);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   437
                if (err == KErrNone && text == KWinsockAPName)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   438
                {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   439
                    if (!found)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   440
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   441
                        found = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   442
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   443
                    else
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   444
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   445
                        TRACE1("  deleting record #%d",id);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   446
                        LEAVE_IF_ERROR(view->DeleteRecord());
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   447
                        needCommit = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   448
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   449
                }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   450
            }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   451
        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   452
        while (view->GotoNextRecord() == KErrNone);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   453
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   454
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   455
    // Create a new entry if it doesn't exist
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   456
    if (!found)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   457
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   458
        LEAVE_IF_ERROR(view->InsertRecord(id));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   459
        TRACE2("created %S #%d",&TableName,id);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   460
        TRAP(err,view->WriteTextL(NameColumn, KWinsockAPName));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   461
        ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   462
        LEAVE_IF_ERROR(view->PutRecordChanges());
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   463
        needCommit = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   464
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   465
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   466
    aNetworkId = id;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   467
    CleanupStack::PopAndDestroy(view);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   468
    return needCommit;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   469
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   470
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   471
// Finds our records in CommDb, creating one if necessary. Returns ETrue
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   472
// if transaction needs to be commited.
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   473
static TBool WsockCheckBearerTypeL(CCommsDatabase* aDb, TUint32& aBearerId)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   474
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   475
    const TDesC& TableName = KWinsockBearerType();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   476
    TRACE1("examining %S table...",&TableName);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   477
    CCommsDbTableView* view = aDb->OpenTableLC(TableName);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   478
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   479
    TBuf<KCommsDbSvrMaxFieldLength> agent;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   480
    agent.Copy(KWinsockAgent);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   481
    agent.Append(_L(".agt"));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   482
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   483
    // Column names
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   484
    TPtrC IdColumn(COMMDB_ID);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   485
    TPtrC NameColumn(COMMDB_NAME);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   486
    TPtrC IfNameColumn(IF_NAME);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   487
    TPtrC AgentColumn(AGENT_NAME);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   488
    TPtrC SocketActivityTimeoutColumn(LAST_SOCKET_ACTIVITY_TIMEOUT);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   489
    TPtrC SessionClosedTimeoutColumn(LAST_SESSION_CLOSED_TIMEOUT);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   490
    TPtrC SocketClosedTimeoutColumn(LAST_SOCKET_CLOSED_TIMEOUT);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   491
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   492
    // Walk the table
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   493
    TInt err;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   494
    TBool needCommit = EFalse;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   495
    if (view->GotoFirstRecord() == KErrNone)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   496
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   497
        TUint32 number = 0;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   498
        TBuf<KCommsDbSvrMaxFieldLength> text;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   499
        do
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   500
        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   501
            // This one must exist
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   502
            TUint32 id = 0;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   503
            TRAPD(err, view->ReadUintL(IdColumn, id));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   504
            if (err == KErrNone)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   505
            {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   506
                // We detect our record based on the value of the "IfName"
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   507
                // column, it must point to our interface.
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   508
                TRAP(err, view->ReadTextL(IfNameColumn,text));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   509
                TRACE3("  %S #%d -> %S",&TableName,id,&text);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   510
                if (err == KErrNone && text == KWinsockInterface)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   511
                {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   512
                    aBearerId = id;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   513
                    TUint updateFlags = 0;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   514
                    TRAP(err, view->ReadTextL(AgentColumn,text));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   515
                    if (err != KErrNone || text != agent)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   516
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   517
                       updateFlags |= TBearerUpdateAgent;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   518
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   519
                    TRAP(err, view->ReadUintL(SocketActivityTimeoutColumn,number));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   520
                    if (err != KErrNone || number != KWinsockSocketActivityTimeout)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   521
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   522
                       updateFlags |= TBearerUpdateSocketActivityTimeout;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   523
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   524
                    TRAP(err, view->ReadUintL(SessionClosedTimeoutColumn,number));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   525
                    if (err != KErrNone || number != KWinsockSessionClosedTimeout)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   526
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   527
                       updateFlags |= TBearerUpdateSessionClosedTimeout;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   528
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   529
                    TRAP(err, view->ReadUintL(SocketClosedTimeoutColumn,number));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   530
                    if (err != KErrNone || number != KWinsockSocketClosedTimeout)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   531
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   532
                       updateFlags |= TBearerUpdateSocketClosedTimeout;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   533
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   534
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   535
                    if (updateFlags)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   536
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   537
                        needCommit = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   538
                        TRACE3("updating %S #%d (flags: %08X)",&TableName,id,updateFlags);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   539
                        LEAVE_IF_ERROR(view->UpdateRecord());
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   540
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   541
                        if (updateFlags & TBearerUpdateAgent)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   542
                        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   543
                            TRAP(err,view->WriteTextL(AgentColumn,agent));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   544
                            ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   545
                        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   546
                        if (updateFlags & TBearerUpdateSocketActivityTimeout)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   547
                        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   548
                            TRAP(err,view->WriteUintL(SocketActivityTimeoutColumn,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   549
                                KWinsockSocketActivityTimeout));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   550
                            ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   551
                        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   552
                        if (updateFlags & TBearerUpdateSessionClosedTimeout)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   553
                        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   554
                            TRAP(err,view->WriteUintL(SessionClosedTimeoutColumn,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   555
                                KWinsockSessionClosedTimeout));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   556
                            ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   557
                        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   558
                        if (updateFlags & TBearerUpdateSocketClosedTimeout)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   559
                        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   560
                            TRAP(err,view->WriteUintL(SocketClosedTimeoutColumn,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   561
                                KWinsockSocketClosedTimeout));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   562
                            ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   563
                        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   564
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   565
                        LEAVE_IF_ERROR(view->PutRecordChanges());
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   566
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   567
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   568
                    // Done
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   569
                    CleanupStack::PopAndDestroy(view);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   570
                    return needCommit;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   571
                }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   572
            }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   573
        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   574
        while (view->GotoNextRecord() == KErrNone);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   575
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   576
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   577
    // Create a new entry
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   578
    LEAVE_IF_ERROR(view->InsertRecord(aBearerId));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   579
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   580
    TRACE2("created %S #%d",&TableName,aBearerId);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   581
    TRAP(err,view->WriteTextL(NameColumn,KWinsockBearerName));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   582
    ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   583
    TRAP(err,view->WriteTextL(IfNameColumn,KWinsockInterface));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   584
    ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   585
    TRAP(err,view->WriteTextL(AgentColumn,agent));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   586
    ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   587
    TRAP(err,view->WriteUintL(SocketActivityTimeoutColumn, KWinsockSocketClosedTimeout));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   588
    ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   589
    TRAP(err,view->WriteUintL(SessionClosedTimeoutColumn, KWinsockSessionClosedTimeout));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   590
    ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   591
    TRAP(err,view->WriteUintL(SocketClosedTimeoutColumn, KWinsockSocketClosedTimeout));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   592
    ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   593
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   594
    // These must be present in the LANBearer table, otherwise
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   595
    // PutRecordChanges fails because these fields are mandatory
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   596
    _LIT(something,"foo");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   597
    TRAP(err,view->WriteTextL(TPtrC(LAN_BEARER_LDD_NAME),something));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   598
    TRAP(err,view->WriteTextL(TPtrC(LAN_BEARER_PDD_NAME),something));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   599
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   600
    LEAVE_IF_ERROR(view->PutRecordChanges());
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   601
    CleanupStack::PopAndDestroy(view);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   602
    return ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   603
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   604
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   605
// Finds our records in CommDb, creating one if necessary. Returns ETrue
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   606
// if transaction needs to be commited.
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   607
static TBool WsockCheckServiceTypeL(CCommsDatabase* aDb, TUint32& aServiceId)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   608
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   609
    const TDesC& TableName = KWinsockServiceType();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   610
    TRACE1("examining %S table...",&TableName);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   611
    CCommsDbTableView* view = aDb->OpenTableLC(TableName);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   612
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   613
    // We will need the list of networks and the agent ame
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   614
    TBuf<KCommsDbSvrMaxFieldLength> networks;
1
ac50fd48361b Second Contribution
rajpuroh
parents: 0
diff changeset
   615
    CWinsockProtocolFamily::ProtocolNamesfownetwork(networks);
0
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   616
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   617
    // Column names
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   618
    TPtrC IdColumn(COMMDB_ID);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   619
    TPtrC NameColumn(COMMDB_NAME);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   620
    TPtrC APNColumn(GPRS_APN);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   621
    TPtrC APTypeColumn(GPRS_AP_TYPE);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   622
    TPtrC NetworksColumn(SERVICE_IF_NETWORKS);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   623
    TPtrC AuthPromptColumn(ISP_IF_PROMPT_FOR_AUTH);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   624
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   625
    // Walk the table
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   626
    TInt err;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   627
    if (view->GotoFirstRecord() == KErrNone)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   628
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   629
        TBuf<KCommsDbSvrMaxFieldLength> text;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   630
        do
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   631
        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   632
            // This one must exist
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   633
            TUint32 id = 0;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   634
            TRAPD(err, view->ReadUintL(IdColumn, id));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   635
            if (err == KErrNone)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   636
            {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   637
                TRAP(err, view->ReadTextL(NameColumn,text));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   638
                TRACE3("  %S #%d -> %S",&TableName,id,&text);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   639
                if (err == KErrNone && text == KWinsockServiceName)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   640
                {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   641
                    // This is our record. Make sure it looks right.
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   642
                    aServiceId = id;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   643
                    TBool authPrompt = EFalse;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   644
                    TInt updateFlags = 0;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   645
                    TRAP(err, view->ReadTextL(NetworksColumn,text));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   646
                    if (err != KErrNone || text != networks)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   647
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   648
                        updateFlags |= TServiceUpdateNetworks;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   649
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   650
                    // The following one is not present in the LANService
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   651
                    // table. Ignore it if it's not there.
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   652
                    TRAP(err, view->ReadBoolL(AuthPromptColumn,authPrompt));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   653
                    if (err == KErrNone && authPrompt)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   654
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   655
                        updateFlags |= TServiceUpdateAuthPrompt;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   656
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   657
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   658
                    // The above statement also applies to APN column
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   659
                    TBuf<KCommsDbSvrMaxFieldLength> text;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   660
                    TRAP(err, view->ReadTextL(APNColumn,text));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   661
                    if (err == KErrNone && text != KWinsockAPName)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   662
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   663
                        updateFlags |= TServiceUpdateAPN;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   664
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   665
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   666
#ifndef WSOCK_LAN_SERVICE
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   667
                    // This one is important. If this number isn't set, our
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   668
                    // access point almost (!) never shows up in the list of
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   669
                    // access points, at least if we use "OutgoingGPRS"
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   670
                    // service type (hence the #ifdef).
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   671
                    TUint32 n = 0;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   672
                    TRAP(err, view->ReadUintL(APTypeColumn, n));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   673
                    if (err != KErrNone || n != KWinsockAPType)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   674
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   675
                        updateFlags |= TServiceUpdateAPType;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   676
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   677
#endif // !WSOCK_LAN_SERVICE
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   678
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   679
                    TBool update = (updateFlags != 0);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   680
                    if (update)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   681
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   682
                        TRACE3("updating %S #%d (flags: %08X)",&TableName,id,updateFlags);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   683
                        LEAVE_IF_ERROR(view->UpdateRecord());
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   684
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   685
                        if (updateFlags & TServiceUpdateNetworks)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   686
                        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   687
                            TRAP(err,view->WriteTextL(NetworksColumn,networks));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   688
                            ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   689
                        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   690
                        if (updateFlags & TServiceUpdateAuthPrompt)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   691
                        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   692
                            TRAP(err,view->WriteBoolL(AuthPromptColumn,EFalse));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   693
                            ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   694
                        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   695
                        if (updateFlags & TServiceUpdateAPN)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   696
                        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   697
                            TRAP(err,view->WriteTextL(APNColumn,KWinsockAPName));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   698
                            ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   699
                        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   700
                        if (updateFlags & TServiceUpdateAPType)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   701
                        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   702
                            TRAP(err,view->WriteUintL(APTypeColumn,KWinsockAPType));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   703
                            ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   704
                        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   705
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   706
                        LEAVE_IF_ERROR(view->PutRecordChanges());
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   707
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   708
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   709
                    // Done
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   710
                    CleanupStack::PopAndDestroy(view);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   711
                    return update;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   712
                }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   713
            }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   714
        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   715
        while (view->GotoNextRecord() == KErrNone);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   716
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   717
        TRACE1("  did not find %S",&KWinsockServiceName);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   718
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   719
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   720
    // Create a new entry
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   721
    LEAVE_IF_ERROR(view->InsertRecord(aServiceId));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   722
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   723
    TRACE2("created %S #%d",&TableName,aServiceId);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   724
    TRAP(err,view->WriteTextL(NameColumn,KWinsockServiceName));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   725
    ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   726
    TRAP(err,view->WriteTextL(NetworksColumn,networks));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   727
    ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   728
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   729
    // Ignore the errors below - LANService table does not have these entries.
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   730
    // Only OutgoingGPRS does. But we try anyway, in case if Symbian unifies
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   731
    // the formats of the service tables in CommDb.
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   732
    TRAP(err,view->WriteBoolL(AuthPromptColumn,EFalse));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   733
    TRAP(err,view->WriteTextL(APNColumn,KWinsockAPName));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   734
    TRAP(err,view->WriteUintL(APTypeColumn,KWinsockAPType));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   735
    TRAP(err,view->WriteUintL(TPtrC(GPRS_PDP_TYPE),KWinsockPdpType));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   736
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   737
    // We don't use these fields, but they are mandatory.
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   738
    TRAP(err,view->WriteBoolL(TPtrC(SERVICE_IP_ADDR_FROM_SERVER),EFalse));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   739
    ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   740
    TRAP(err,view->WriteBoolL(TPtrC(SERVICE_IP_DNS_ADDR_FROM_SERVER),EFalse));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   741
    ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   742
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   743
    LEAVE_IF_ERROR(view->PutRecordChanges());
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   744
    CleanupStack::PopAndDestroy(view);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   745
    return ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   746
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   747
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   748
// Finds our record in WAPAccessPoint table, creating one if necessary.
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   749
// Returns ETrue if transaction needs to be commited.
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   750
static TBool WsockCheckWapAccessPointL(CCommsDatabase* aDb, TUint32& aWapApId)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   751
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   752
    TPtrC TableName(WAP_ACCESS_POINT);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   753
    TRACE1("examining %S table...",&TableName);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   754
    CCommsDbTableView* view = aDb->OpenTableLC(TableName);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   755
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   756
    // Column names
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   757
    TPtrC IdColumn(COMMDB_ID);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   758
    TPtrC NameColumn(COMMDB_NAME);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   759
    TPtrC CurrentBearerColumn(WAP_CURRENT_BEARER);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   760
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   761
    // Walk the table
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   762
    TInt err;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   763
    TUint32 id = 0;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   764
    TBool found = EFalse;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   765
    TBool commit = EFalse;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   766
    if (view->GotoFirstRecord() == KErrNone)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   767
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   768
        TBuf<KCommsDbSvrMaxFieldLength> text;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   769
        do
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   770
        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   771
            // This one must exist
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   772
            TRAPD(err, view->ReadUintL(IdColumn, id));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   773
            if (err == KErrNone)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   774
            {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   775
                TRAP(err, view->ReadTextL(NameColumn,text));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   776
                TRACE3("  %S #%d -> %S",&TableName,id,&text);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   777
                if (err == KErrNone && text == KWinsockAPName)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   778
                {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   779
                    if (!found)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   780
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   781
                        aWapApId = id;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   782
                        found = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   783
                        TRAP(err, view->ReadTextL(CurrentBearerColumn,text));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   784
                        if (err != KErrNone || text != KWinsockWapBearer)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   785
                        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   786
                            TRACE1("  updating \"%S\"",&CurrentBearerColumn);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   787
                            LEAVE_IF_ERROR(view->UpdateRecord());
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   788
                            TRAP(err,view->WriteTextL(CurrentBearerColumn,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   789
                                                      KWinsockWapBearer));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   790
                            ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   791
                            LEAVE_IF_ERROR(view->PutRecordChanges());
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   792
                            commit = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   793
                        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   794
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   795
                    else
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   796
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   797
                        TRACE1("  deleting record #%d",id);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   798
                        LEAVE_IF_ERROR(view->DeleteRecord());
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   799
                        commit = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   800
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   801
                }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   802
            }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   803
        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   804
        while (view->GotoNextRecord() == KErrNone);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   805
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   806
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   807
    // Create a new entry if it doesn't exist
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   808
    if (!found)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   809
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   810
        LEAVE_IF_ERROR(view->InsertRecord(id));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   811
        TRACE2("created %S #%d",&TableName,id);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   812
        TRAP(err,view->WriteTextL(NameColumn, KWinsockAPName));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   813
        ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   814
        TRAP(err,view->WriteTextL(CurrentBearerColumn, KWinsockWapBearer));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   815
        ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   816
        LEAVE_IF_ERROR(view->PutRecordChanges());
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   817
        aWapApId = id;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   818
        commit = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   819
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   820
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   821
    CleanupStack::PopAndDestroy(view);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   822
    return commit;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   823
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   824
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   825
// Finds our records in WAPIPBearer table, creating one if necessary.
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   826
// Returns ETrue if transaction needs to be commited.
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   827
static TBool WsockCheckWapIpBearerL(CCommsDatabase* aDb,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   828
                                    TUint32 aWapApId,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   829
                                    TUint32 aIapId)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   830
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   831
    const TDesC& TableName = KWinsockWapBearer();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   832
    TRACE1("examining %S table...",&TableName);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   833
    CCommsDbTableView* view = aDb->OpenTableLC(TableName);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   834
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   835
    // Column names
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   836
    TPtrC IdColumn(COMMDB_ID);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   837
    TPtrC NameColumn(COMMDB_NAME);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   838
    TPtrC AccessPointIdColumn(WAP_ACCESS_POINT_ID);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   839
    TPtrC IAPColumn(WAP_IAP);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   840
    TPtrC ProxyPortColumn(WAP_PROXY_PORT);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   841
    TPtrC WspOptionColumn(WAP_WSP_OPTION);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   842
    TPtrC SecurityColumn(WAP_SECURITY);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   843
    TPtrC GatewayAddressColumn(WAP_GATEWAY_ADDRESS);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   844
    TPtrC ProxyLoginNameColumn(WAP_PROXY_LOGIN_NAME);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   845
    TPtrC ProxyLoginPassColumn(WAP_PROXY_LOGIN_PASS);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   846
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   847
    // Walk the table
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   848
    TInt err;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   849
    TUint32 id = 0;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   850
    if (view->GotoFirstRecord() == KErrNone)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   851
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   852
        do
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   853
        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   854
            // This one must exist
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   855
            TRAPD(err, view->ReadUintL(IdColumn, id));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   856
            if (err == KErrNone)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   857
            {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   858
                // We detect our record based on WAP access point id
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   859
                TUint32 wap = 0;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   860
                TRAPD(err, view->ReadUintL(AccessPointIdColumn, wap));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   861
                TRACE3("  %S #%d -> %d", &TableName, id, wap);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   862
                if (err == KErrNone && wap == aWapApId)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   863
                {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   864
                    TUint32 n = 0;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   865
                    TBool b = EFalse;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   866
                    TUint updateFlags = 0;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   867
                    TBuf<KCommsDbSvrMaxFieldLength> text;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   868
                    TBool commit = EFalse;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   869
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   870
                    TRAPD(err, view->ReadUintL(IAPColumn, n));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   871
                    if (err != KErrNone || n != aIapId)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   872
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   873
                        updateFlags |= TWapIpBearerUpdateIAP;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   874
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   875
                    TRAP(err, view->ReadUintL(WspOptionColumn, n));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   876
                    if (err != KErrNone)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   877
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   878
                        updateFlags |= TWapIpBearerUpdateWspOption;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   879
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   880
                    TRAP(err, view->ReadUintL(ProxyPortColumn, n));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   881
                    if (err != KErrNone)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   882
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   883
                        updateFlags |= TWapIpBearerUpdateProxyPort;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   884
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   885
                    TRAP(err, view->ReadBoolL(SecurityColumn, b));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   886
                    if (err != KErrNone)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   887
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   888
                        updateFlags |= TWapIpBearerUpdateSecurity;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   889
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   890
                    TRAP(err, view->ReadTextL(GatewayAddressColumn,text));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   891
                    if (err != KErrNone || text != KWinsockGatewayAddress)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   892
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   893
                        updateFlags |= TWapIpBearerUpdateGatewayAddress;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   894
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   895
                    TRAP(err, view->ReadTextL(ProxyLoginNameColumn,text));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   896
                    if (err != KErrNone)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   897
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   898
                        updateFlags |= TWapIpBearerUpdateProxyLoginName;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   899
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   900
                    TRAP(err, view->ReadTextL(ProxyLoginPassColumn,text));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   901
                    if (err != KErrNone)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   902
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   903
                        updateFlags |= TWapIpBearerUpdateProxyLoginPass;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   904
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   905
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   906
                    TBool update = (updateFlags != 0);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   907
                    if (updateFlags)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   908
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   909
                        // Update the existing table
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   910
                        TRACE3("updating %S #%d (flags: %08X)",&TableName,id,updateFlags);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   911
                        LEAVE_IF_ERROR(view->UpdateRecord());
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   912
                        if (updateFlags & TWapIpBearerUpdateIAP)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   913
                        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   914
                            TRACE1("  updating \"%S\"",&IAPColumn);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   915
                            TRAP(err,view->WriteUintL(IAPColumn, aIapId));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   916
                            ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   917
                        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   918
                        if (updateFlags & TWapIpBearerUpdateWspOption)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   919
                        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   920
                            TRACE1("  updating \"%S\"",&WspOptionColumn);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   921
                            TRAP(err,view->WriteUintL(WspOptionColumn,0));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   922
                            ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   923
                        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   924
                        if (updateFlags & TWapIpBearerUpdateProxyPort)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   925
                        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   926
                            TRACE1("  updating \"%S\"",&ProxyPortColumn);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   927
                            TRAP(err,view->WriteUintL(ProxyPortColumn,0));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   928
                            ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   929
                        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   930
                        if (updateFlags & TWapIpBearerUpdateSecurity)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   931
                        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   932
                            TRACE1("  updating \"%S\"",&SecurityColumn);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   933
                            TRAP(err,view->WriteBoolL(SecurityColumn,EFalse));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   934
                            ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   935
                        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   936
                        if (updateFlags & TWapIpBearerUpdateGatewayAddress)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   937
                        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   938
                            TRACE1("  updating \"%S\"",&GatewayAddressColumn);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   939
                            TRAP(err,view->WriteTextL(GatewayAddressColumn,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   940
                                                      KWinsockGatewayAddress));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   941
                            ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   942
                        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   943
                        if (updateFlags & TWapIpBearerUpdateProxyLoginName)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   944
                        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   945
                            TRACE1("  updating \"%S\"",&ProxyLoginNameColumn);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   946
                            TRAP(err,view->WriteTextL(ProxyLoginNameColumn,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   947
                                                      KNullDesC));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   948
                            ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   949
                        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   950
                        if (updateFlags & TWapIpBearerUpdateProxyLoginPass)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   951
                        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   952
                            TRACE1("  updating \"%S\"",&ProxyLoginPassColumn);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   953
                            TRAP(err,view->WriteTextL(ProxyLoginPassColumn,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   954
                                                      KNullDesC));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   955
                            ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   956
                        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   957
                        LEAVE_IF_ERROR(view->PutRecordChanges());
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   958
                        commit = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   959
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   960
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   961
                    // Done
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   962
                    CleanupStack::PopAndDestroy(view);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   963
                    return commit;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   964
                }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   965
            }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   966
        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   967
        while (view->GotoNextRecord() == KErrNone);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   968
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   969
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   970
    // Create a new entry
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   971
    LEAVE_IF_ERROR(view->InsertRecord(id));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   972
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   973
    TRACE2("created %S #%d",&TableName,id);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   974
    TRAP(err,view->WriteTextL(NameColumn,KWinsockBearerName));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   975
    ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   976
    TRAP(err,view->WriteUintL(AccessPointIdColumn, aWapApId));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   977
    ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   978
    TRAP(err,view->WriteUintL(IAPColumn, aIapId));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   979
    ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   980
    TRAP(err,view->WriteUintL(ProxyPortColumn, 0));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   981
    ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   982
    TRAP(err,view->WriteUintL(WspOptionColumn, 0));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   983
    ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   984
    TRAP(err,view->WriteBoolL(SecurityColumn, EFalse));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   985
    ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   986
    TRAP(err,view->WriteTextL(GatewayAddressColumn,KWinsockGatewayAddress));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   987
    ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   988
    TRAP(err,view->WriteTextL(ProxyLoginNameColumn,KNullDesC));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   989
    ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   990
    TRAP(err,view->WriteTextL(ProxyLoginPassColumn,KNullDesC));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   991
    ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   992
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   993
    LEAVE_IF_ERROR(view->PutRecordChanges());
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   994
    CleanupStack::PopAndDestroy(view);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   995
    return ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   996
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   997
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   998
static TBool WsockCheckConnPreferencesL(CCommsDatabase* aDb, TUint32 aIapId)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
   999
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1000
    TRACE("examining Connection Preferences...");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1001
    CCommsDbConnectionPrefTableView *view = aDb->OpenConnectionPrefTableLC();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1002
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1003
    CCommsDbConnectionPrefTableView::TCommDbIapConnectionPref myPrefs;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1004
    myPrefs.iBearer.iIapId      = aIapId;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1005
    myPrefs.iDirection          = ECommDbConnectionDirectionOutgoing;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1006
    myPrefs.iDialogPref         = ECommDbDialogPrefPrompt;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1007
    myPrefs.iRanking            = 1;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1008
    myPrefs.iBearer.iBearerSet  = KCommDbBearerCSD
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1009
                                | KCommDbBearerWcdma
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1010
                                | KCommDbBearerLAN
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1011
                                | KCommDbBearerVirtual;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1012
    // Walk the table
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1013
    TInt err;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1014
    if (view->GotoFirstRecord() == KErrNone)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1015
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1016
        do
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1017
        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1018
            CCommsDbConnectionPrefTableView::TCommDbIapConnectionPref prefs;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1019
            TRAP(err, view->ReadConnectionPreferenceL(prefs));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1020
            if (err == KErrNone)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1021
            {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1022
                // check, whether this is our record
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1023
                if (prefs.iBearer.iIapId == myPrefs.iBearer.iIapId)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1024
                {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1025
                    TBool update = EFalse;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1026
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1027
                    // This is our record. Make sure it looks right.
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1028
                    if (prefs.iDialogPref != myPrefs.iDialogPref)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1029
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1030
                        TRACE("updating DialogPref");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1031
                        view->UpdateDialogPrefL(myPrefs.iDialogPref);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1032
                        update = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1033
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1034
                    if (prefs.iRanking != myPrefs.iRanking)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1035
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1036
                        TRACE("updating Ranking");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1037
                        view->ChangeConnectionPreferenceRankL(myPrefs.iRanking);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1038
                        update = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1039
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1040
                    if (prefs.iBearer.iBearerSet != myPrefs.iBearer.iBearerSet)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1041
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1042
                        TRACE("updating Bearer");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1043
                        view->UpdateBearerL(myPrefs.iBearer);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1044
                        update = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1045
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1046
                    CleanupStack::PopAndDestroy(view);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1047
                    return update;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1048
                }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1049
            }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1050
        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1051
        while (view->GotoNextRecord() == KErrNone);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1052
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1053
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1054
    // Create a new entry
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1055
    view->InsertConnectionPreferenceL(myPrefs);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1056
    TRACE("created connection preferences");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1057
    CleanupStack::PopAndDestroy(view);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1058
    return ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1059
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1060
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1061
// Finds our records in CommDb, creating one if necessary.
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1062
void WsockCheckCommDbL(TUint32& aIapId,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1063
                       TUint32& aNetworkId,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1064
                       TUint32& aServiceId,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1065
                       TUint32& aBearerId)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1066
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1067
    TRACE("checking CommDb");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1068
    CCommsDatabase* db = CCommsDatabase::NewL();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1069
    CleanupStack::PushL(db);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1070
    WsockBeginCommDbTransactionLC(db);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1071
    TBool commit = EFalse;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1072
    TUint32 number = 0;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1073
    TInt err;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1074
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1075
    // This must be 2
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1076
    TPtrC ConnectionAttempts(CONNECTION_ATTEMPTS);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1077
    TRAP(err, db->GetGlobalSettingL(ConnectionAttempts, number));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1078
    if (err != KErrNone || number < 2)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1079
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1080
        TRACE1("Resetting ConnectionAttempts (%d) to 2",number);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1081
        TRAP(err, db->SetGlobalSettingL(ConnectionAttempts, 2));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1082
        ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1083
        commit = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1084
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1085
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1086
    // Not sure if we need this check...
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1087
    _LIT(KTsy, "PHONETSY");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1088
    TFileName tsy;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1089
    TPtrC BearerAvailabilityCheckTsy(BEARER_AVAILABILITY_CHECK_TSY);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1090
    TRAP(err, db->GetGlobalSettingL(BearerAvailabilityCheckTsy, tsy));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1091
    if (err != KErrNone || tsy.CompareF(KTsy))
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1092
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1093
        TRACE1("Updating BearerAvailabilityCheckTSY (%S)",&tsy);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1094
        TRAP(err, db->SetGlobalSettingL(BearerAvailabilityCheckTsy, KTsy));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1095
        ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1096
        commit = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1097
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1098
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1099
    // Check a few other things
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1100
    if (WsockCheckServiceTypeL(db, aServiceId)) commit = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1101
    if (WsockCheckBearerTypeL(db, aBearerId)) commit = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1102
    if (WsockCheckNetworkL(db, aNetworkId)) commit = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1103
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1104
    // Initialize descriptors
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1105
    TPtrC TableName(IAP);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1106
    TPtrC IdColumn(COMMDB_ID);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1107
    TPtrC NameColumn(COMMDB_NAME);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1108
    TPtrC IAPNetworkColumn(IAP_NETWORK);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1109
    TPtrC IAPServiceColumn(IAP_SERVICE);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1110
    TPtrC IAPServiceTypeColumn(IAP_SERVICE_TYPE);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1111
    TPtrC IAPBearerColumn(IAP_BEARER);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1112
    TPtrC IAPBearerTypeColumn(IAP_BEARER_TYPE);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1113
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1114
    // Open the IAP table
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1115
    CCommsDbTableView* view = db->OpenTableLC(TableName);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1116
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1117
    // Find our access point
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1118
    TRACE("examining APs...");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1119
    if (view->GotoFirstRecord() == KErrNone)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1120
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1121
        TBuf<KCommsDbSvrMaxFieldLength> text;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1122
        do
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1123
        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1124
            // This one must exist
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1125
            TUint32 id = 0;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1126
            TRAP(err, view->ReadUintL(IdColumn, id));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1127
            if (err == KErrNone)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1128
            {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1129
                TRAP(err, view->ReadTextL(NameColumn,text));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1130
                TRACE3("  %S #%d -> %S",&TableName,id,&text);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1131
                if (err == KErrNone && text == KWinsockAPName)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1132
                {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1133
                    aIapId = id;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1134
                    TUint updateFlags = 0;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1135
                    TRAP(err, view->ReadUintL(IAPServiceColumn,number));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1136
                    if (err != KErrNone || number != aServiceId)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1137
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1138
                       updateFlags |= TIAPUpdateService;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1139
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1140
                    TRAP(err, view->ReadTextL(IAPServiceTypeColumn,text));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1141
                    if (err == KErrNone && text != KWinsockServiceType)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1142
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1143
                        updateFlags |= TIAPUpdateServiceType;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1144
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1145
                    TRAP(err, view->ReadUintL(IAPBearerColumn,number));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1146
                    if (err != KErrNone || number != aBearerId)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1147
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1148
                       updateFlags |= TIAPUpdateBearer;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1149
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1150
                    TRAP(err, view->ReadTextL(IAPBearerTypeColumn,text));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1151
                    if (err == KErrNone && text != KWinsockBearerType)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1152
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1153
                        updateFlags |= TIAPUpdateBearerType;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1154
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1155
                    TRAP(err, view->ReadUintL(IAPNetworkColumn,number));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1156
                    if (err != KErrNone || number != aNetworkId)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1157
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1158
                       updateFlags |= TIAPUpdateNetwork;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1159
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1160
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1161
                    if (updateFlags)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1162
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1163
                        // Update the existing table
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1164
                        TRACE2("updating AP \"%S\" (flags: %08X)",&KWinsockAPName(), updateFlags);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1165
                        LEAVE_IF_ERROR(view->UpdateRecord());
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1166
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1167
                        if (updateFlags & TIAPUpdateService)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1168
                        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1169
                            TRACE2("  updating \"%S\": %u",&IAPServiceColumn, aServiceId);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1170
                            TRAP(err,view->WriteUintL(IAPServiceColumn,aServiceId));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1171
                            ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1172
                        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1173
                        if (updateFlags & TIAPUpdateServiceType)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1174
                        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1175
                            TRACE2("  updating \"%S\": %S",&IAPServiceTypeColumn, &KWinsockServiceType);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1176
                            TRAP(err,view->WriteTextL(IAPServiceTypeColumn,KWinsockServiceType));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1177
                            ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1178
                        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1179
                        if (updateFlags & TIAPUpdateBearer)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1180
                        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1181
                            TRACE2("  updating \"%S\": %u",&IAPServiceTypeColumn, aBearerId);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1182
                            TRAP(err,view->WriteUintL(IAPBearerColumn,aBearerId));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1183
                            ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1184
                        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1185
                        if (updateFlags & TIAPUpdateBearerType)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1186
                        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1187
                            TRACE2("  updating \"%S\": %S",&IAPBearerTypeColumn, &KWinsockBearerType);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1188
                            TRAP(err,view->WriteTextL(IAPBearerTypeColumn,KWinsockBearerType));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1189
                            ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1190
                        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1191
                        if (updateFlags & TIAPUpdateNetwork)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1192
                        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1193
                            TRACE2("  updating \"%S\": %u",&IAPNetworkColumn, aNetworkId);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1194
                            TRAP(err,view->WriteUintL(IAPNetworkColumn,aNetworkId));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1195
                            ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1196
                        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1197
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1198
                        LEAVE_IF_ERROR(view->PutRecordChanges());
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1199
                        commit = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1200
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1201
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1202
                    TUint32 wap = 0;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1203
                    if (WsockCheckWapAccessPointL(db,wap)) commit = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1204
                    if (WsockCheckWapIpBearerL(db,wap,aIapId)) commit = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1205
                    if (WsockCheckConnPreferencesL(db, aIapId)) commit = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1206
                    if (commit)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1207
                    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1208
                        TRACE("commit CommDb transaction");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1209
                        LEAVE_IF_ERROR(db->CommitTransaction());
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1210
                    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1211
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1212
                    // Done
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1213
                    CleanupStack::PopAndDestroy(view);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1214
                    CleanupStack::Pop(); // WsockRollbackOnLeave
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1215
                    CleanupStack::PopAndDestroy(db);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1216
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1217
                    TRACE4("selected AP=%d, network=%d, service=%d, bearer=%d",
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1218
                        aIapId,aNetworkId,aServiceId,aBearerId);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1219
                    return;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1220
                }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1221
            }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1222
        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1223
        while (view->GotoNextRecord() == KErrNone);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1224
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1225
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1226
    // Find any valid location id
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1227
    TUint32 locationId = 1;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1228
    CCommsDbTableView* locationView = db->OpenTableLC(TPtrC(LOCATION));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1229
    if (locationView->GotoFirstRecord() == KErrNone)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1230
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1231
        TRAPD(err, locationView->ReadUintL(IdColumn, locationId));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1232
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1233
    CleanupStack::PopAndDestroy(locationView);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1234
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1235
    // Create new IAP entry
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1236
    err = view->InsertRecord(aIapId);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1237
    ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1238
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1239
    TRACE1("created AP #%d",aIapId);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1240
    TRAP(err,view->WriteTextL(NameColumn,KWinsockAPName));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1241
    ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1242
    TRAP(err,view->WriteUintL(IAPServiceColumn,aServiceId));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1243
    ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1244
    TRAP(err,view->WriteTextL(IAPServiceTypeColumn,KWinsockServiceType));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1245
    ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1246
    TRAP(err,view->WriteUintL(IAPBearerColumn,aBearerId));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1247
    ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1248
    TRAP(err,view->WriteTextL(IAPBearerTypeColumn,KWinsockBearerType));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1249
    ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1250
    TRAP(err,view->WriteUintL(IAPNetworkColumn,aNetworkId));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1251
    ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1252
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1253
    // These must be present in the LANBearer table, otherwise
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1254
    // PutRecordChanges fails because these fields are mandatory
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1255
    _LIT(something,"foo");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1256
    TRAP(err,view->WriteUintL(TPtrC(IAP_NETWORK_WEIGHTING),0));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1257
    ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1258
    TRAP(err,view->WriteUintL(TPtrC(IAP_LOCATION),locationId));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1259
    ASSERT_SUCCESS(err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1260
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1261
    LEAVE_IF_ERROR(view->PutRecordChanges());
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1262
    CleanupStack::PopAndDestroy(view);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1263
    CleanupStack::Pop(); // WsockRollbackOnLeave
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1264
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1265
    TUint32 wap = 0;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1266
    WsockCheckWapAccessPointL(db, wap);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1267
    WsockCheckWapIpBearerL(db, wap, aIapId);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1268
    WsockCheckConnPreferencesL(db, aIapId);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1269
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1270
    TRACE("commit CommDb transaction");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1271
    LEAVE_IF_ERROR(db->CommitTransaction());
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1272
    CleanupStack::PopAndDestroy(db);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1273
    TRACE4("selected AP=%d, network=%d, service=%d, bearer=%d",
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1274
        aIapId,aNetworkId,aServiceId,aBearerId);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1275
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1276
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1277
// Creating necessary entries in CommDB if necessary.
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1278
static TInt WsockCheckCommDb()
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1279
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1280
    TUint32 apId, apNetwork, apService, apBearer;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1281
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1282
    // Make sure Winsock is initialized
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1283
    static TBool initWinsock = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1284
    if (initWinsock) {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1285
        WSADATA wsaData;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1286
        TRACE("initializing Winsock");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1287
        WSAStartup(MAKEWORD(1,1),&wsaData);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1288
        initWinsock = EFalse;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1289
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1290
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1291
    WsockLock lock;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1292
    lock.Lock();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1293
    TRAPD(err, WsockCheckCommDbL(apId, apNetwork, apService, apBearer));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1294
    lock.Unlock();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1295
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1296
    if (err == KErrNone)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1297
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1298
        TRACE("CommDB check successful");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1299
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1300
    else
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1301
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1302
        TRACE1("CommDB check failed, err %d",err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1303
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1304
    return err;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1305
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1306
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1307
// Deletes Wsock access points
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1308
static TBool WsockDeleteApsL(CCommsDatabase* aDb)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1309
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1310
    TBool needCommit = EFalse;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1311
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1312
    // Initialize descriptors
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1313
    TPtrC TableName(IAP);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1314
    TPtrC IdColumn(COMMDB_ID);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1315
    TPtrC NameColumn(COMMDB_NAME);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1316
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1317
    // Open the IAP table
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1318
    CCommsDbTableView* view = aDb->OpenTableLC(TableName);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1319
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1320
    // Find our access points
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1321
    TRACE("looking for APs to delete...");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1322
    if (view->GotoFirstRecord() == KErrNone)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1323
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1324
        TUint32 number = 0;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1325
        TBuf<KCommsDbSvrMaxFieldLength> text;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1326
        do
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1327
        {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1328
            // This one must exist
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1329
            TUint32 id = 0;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1330
            TRAPD(err, view->ReadUintL(IdColumn, id));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1331
            if (err == KErrNone)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1332
            {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1333
                TRAP(err, view->ReadTextL(NameColumn,text));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1334
                TRACE3("  %S #%d -> %S",&TableName,id,&text);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1335
                if (err == KErrNone && text == KWinsockAPName)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1336
                {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1337
                    TRACE1("deleting AP #%d",id);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1338
                    LEAVE_IF_ERROR(view->DeleteRecord());
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1339
                    needCommit = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1340
                }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1341
            }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1342
        }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1343
        while (view->GotoNextRecord() == KErrNone);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1344
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1345
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1346
    CleanupStack::PopAndDestroy(view);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1347
    return needCommit;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1348
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1349
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1350
// Configures wsock settings, leaves on failure
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1351
static void WsockSetConfigL(TBool aUseWsock, TBool aUseProxy,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1352
                            const TDesC* aHost, TUint aPort)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1353
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1354
    // Synchronize access to the database
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1355
    WsockLock lock;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1356
    lock.LockLC();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1357
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1358
    // Figure out the service id - we will need it
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1359
    CCommsDatabase* db = CCommsDatabase::NewL();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1360
    CleanupStack::PushL(db);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1361
    WsockBeginCommDbTransactionLC(db);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1362
    TUint32 serviceId;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1363
    TBool commit = WsockCheckServiceTypeL(db, serviceId);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1364
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1365
    // Now that we know the service id, we can update the proxy settings
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1366
    if (WsockCheckProxyL(db,serviceId,aUseProxy,aHost,aPort)) commit = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1367
    if (!aUseWsock && WsockDeleteApsL(db)) commit = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1368
    if (commit)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1369
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1370
        TRACE("commit CommDb transaction");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1371
        LEAVE_IF_ERROR(db->CommitTransaction());
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1372
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1373
    CleanupStack::Pop(); // WsockRollbackOnLeave
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1374
    CleanupStack::PopAndDestroy(db);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1375
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1376
    if (aUseWsock)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1377
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1378
        // Final touch
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1379
        TUint32 apId, networkId, bearerId;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1380
        TRAPD(err, WsockCheckCommDbL(apId, networkId, serviceId, bearerId));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1381
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1382
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1383
    CleanupStack::PopAndDestroy(); // WsockLock::UnlockOnLeave
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1384
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1385
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1386
// Reads Wsock settings, leaves on failure
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1387
static void WsockQueryConfigL(TBool& aUseProxy, HBufC*& aHost, TUint& aPort)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1388
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1389
    // Default values
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1390
    aUseProxy = EFalse;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1391
    aHost = NULL;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1392
    aPort = KDefaultProxyPort;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1393
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1394
    // Synchronize access to the database
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1395
    WsockLock lock;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1396
    lock.LockLC();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1397
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1398
    // Figure out the service id - we will need it
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1399
    CCommsDatabase* db = CCommsDatabase::NewL();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1400
    CleanupStack::PushL(db);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1401
    WsockBeginCommDbTransactionLC(db);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1402
    TUint32 serviceId;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1403
    TBool commit = EFalse;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1404
    if (WsockCheckServiceTypeL(db, serviceId)) commit = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1405
    if (WsockCheckProxyL(db, serviceId)) commit = ETrue;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1406
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1407
    // At this point there should be only one record in the proxy table
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1408
    const TDesC& TableName = KProxyTableName();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1409
    const TDesC& ServiceType = KWinsockServiceType();
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1410
    CCommsDbTableView* view = db->OpenTableLC(TableName);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1411
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1412
    // Column names
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1413
    TPtrC UseProxyColumn(PROXY_USE_PROXY_SERVER);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1414
    TPtrC ProxyPortColumn(PROXY_PORT_NUMBER);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1415
    TPtrC ServerNameColumn(PROXY_SERVER_NAME);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1416
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1417
    // Walk the table and deleted everything except our settings
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1418
    TInt status = KErrNotFound;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1419
    if (view->GotoFirstRecord() == KErrNone)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1420
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1421
        status = KErrNone;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1422
        TUint32 number = KDefaultProxyPort;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1423
        view->ReadBoolL(UseProxyColumn,aUseProxy);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1424
        view->ReadUintL(ProxyPortColumn, number);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1425
        aPort = number;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1426
        aHost = view->ReadLongTextLC(ServerNameColumn);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1427
        CleanupStack::Pop(aHost);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1428
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1429
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1430
    if (commit)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1431
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1432
        TRACE("commit CommDb transaction");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1433
        LEAVE_IF_ERROR(db->CommitTransaction());
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1434
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1435
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1436
    CleanupStack::PopAndDestroy(view);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1437
    CleanupStack::Pop();            // WsockRollbackOnLeave
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1438
    CleanupStack::PopAndDestroy(db);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1439
    CleanupStack::PopAndDestroy();  // WsockLock::UnlockOnLeave
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1440
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1441
    LEAVE_IF_ERROR(status);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1442
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1443
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1444
// Entry point #1
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1445
extern "C"EXPORT_C CProtocolFamilyBase * WsockCreateProtocolFamily()
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1446
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1447
    TRACE("WsockCreateProtocolFamily");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1448
    VERIFY_SUCCESS(WsockCheckCommDb());
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1449
    return new CWinsockProtocolFamily(KAfInet);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1450
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1451
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1452
// Entry point #2
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1453
extern "C" EXPORT_C CNifAgentFactory* WsockCreateAgentFactory()
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1454
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1455
    TRACE("WsockCreateAgentFactory");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1456
    return new CWinsockAgentFactory;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1457
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1458
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1459
// Entry point #3
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1460
extern "C" EXPORT_C CNifIfFactory* WsockCreateInterfaceFactory()
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1461
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1462
    TRACE("WsockCreateInterfaceFactory");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1463
    return new CWinsockInterfaceFactory;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1464
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1465
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1466
// Entry point #4
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1467
extern "C" EXPORT_C TInt WsockQueryConfiguration(TBool& aUseProxy,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1468
                                                 HBufC*& aProxyHost,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1469
                                                 TUint& aProxyPort)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1470
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1471
    TRACE("WsockQueryProxy");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1472
    TRAPD(err,WsockQueryConfigL(aUseProxy,aProxyHost,aProxyPort));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1473
    if (err == KErrNone)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1474
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1475
        TRACE3("WsockQueryConfig: %d,%S:%d",aUseProxy,aProxyHost,aProxyPort);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1476
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1477
    else
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1478
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1479
        TRACE1("configuration query failed, err %d",err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1480
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1481
    return err;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1482
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1483
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1484
// Entry point #5
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1485
extern "C" EXPORT_C TInt WsockSetConfiguration(TBool aUseWsock,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1486
                                               TBool aUseProxy,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1487
                                               const TDesC* aProxyHost,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1488
                                               TUint aProxyPort)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1489
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1490
    TRACE4("WsockSetConfig(%d,%d,%S:%d)",aUseWsock,aUseProxy,
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1491
        aProxyHost,aProxyPort);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1492
    TRAPD(err,WsockSetConfigL(aUseWsock, aUseProxy, aProxyHost, aProxyPort));
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1493
    if (err == KErrNone)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1494
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1495
        TRACE("configuration updated ok");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1496
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1497
    else
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1498
    {
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1499
        TRACE1("configuration update failed, err %d",err);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1500
    }
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1501
    return err;
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1502
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1503
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1504
// Entry point #6
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1505
extern "C"EXPORT_C CProtocolFamilyBase * WsockCreateProtocolFamily6()
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1506
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1507
    TRACE("WsockCreateProtocolFamily6");
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1508
    VERIFY_SUCCESS(WsockCheckCommDb());
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1509
    return new CWinsockProtocolFamily(KAfInet6);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1510
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1511
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1512
#ifndef EKA2
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1513
// Required function
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1514
GLDEF_C TInt E32Dll(TDllReason /*aReason*/)
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1515
{
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1516
    return(KErrNone);
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1517
}
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1518
#endif // !EKA2
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1519
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1520
/**
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1521
 * Local Variables:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1522
 * c-basic-offset: 4
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1523
 * indent-tabs-mode: nil
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1524
 * End:
b26acd06ea60 First Contribution of SDK components
rajpuroh
parents:
diff changeset
  1525
 */