summaryrefslogtreecommitdiff
path: root/pjlib/src/pj/ssl_sock_symbian.cpp
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2009-11-09 08:51:34 +0000
committerBenny Prijono <bennylp@teluu.com>2009-11-09 08:51:34 +0000
commitd74a1707948d51e98826aa4507ff1dd1a6c02601 (patch)
tree6f9d6d852f0ad80e27ca3d2fde00befbf8c28b32 /pjlib/src/pj/ssl_sock_symbian.cpp
parent23363ea696574b1f6e40c3e8c800cb12e2c5ff57 (diff)
Ticket #950 and #957:
- added QoS options on PJLIB/PJLIB SSL/TLS socket/transport - added demo in Symbian ua.cpp git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2998 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjlib/src/pj/ssl_sock_symbian.cpp')
-rw-r--r--pjlib/src/pj/ssl_sock_symbian.cpp39
1 files changed, 31 insertions, 8 deletions
diff --git a/pjlib/src/pj/ssl_sock_symbian.cpp b/pjlib/src/pj/ssl_sock_symbian.cpp
index 18dfd7c0..efcf1702 100644
--- a/pjlib/src/pj/ssl_sock_symbian.cpp
+++ b/pjlib/src/pj/ssl_sock_symbian.cpp
@@ -97,8 +97,11 @@ public:
SSL_STATE_ESTABLISHED
};
- static CPjSSLSocket *NewL(const TDesC8 &ssl_proto) {
- CPjSSLSocket *self = new (ELeave) CPjSSLSocket();
+ static CPjSSLSocket *NewL(const TDesC8 &ssl_proto,
+ pj_qos_type qos_type,
+ const pj_qos_params &qos_params)
+ {
+ CPjSSLSocket *self = new (ELeave) CPjSSLSocket(qos_type, qos_params);
CleanupStack::PushL(self);
self->ConstructL(ssl_proto);
CleanupStack::Pop(self);
@@ -130,6 +133,10 @@ private:
pj_sock_t sock_;
CSecureSocket *securesock_;
bool is_connected_;
+
+ pj_qos_type qos_type_;
+ pj_qos_params qos_params_;
+
CPjSSLSocketReader *reader_;
TBuf<32> ssl_proto_;
TInetAddr rem_addr_;
@@ -143,11 +150,11 @@ private:
void DoCancel();
void RunL();
- CPjSSLSocket() :
+ CPjSSLSocket(pj_qos_type qos_type, const pj_qos_params &qos_params) :
CActive(0), state_(SSL_STATE_NULL), sock_(PJ_INVALID_SOCKET),
- securesock_(NULL),
- is_connected_(false), reader_(NULL),
- cb_(NULL), key_(NULL)
+ securesock_(NULL), is_connected_(false),
+ qos_type_(qos_type), qos_params_(qos_params),
+ reader_(NULL), cb_(NULL), key_(NULL)
{}
void ConstructL(const TDesC8 &ssl_proto) {
@@ -164,7 +171,7 @@ private:
securesock_ = NULL;
}
if (sock_ != PJ_INVALID_SOCKET) {
- delete (CPjSocket*)sock_;
+ pj_sock_close(sock_);
sock_ = PJ_INVALID_SOCKET;
}
}
@@ -183,6 +190,10 @@ int CPjSSLSocket::Connect(CPjSSLSocket_cb cb, void *key,
if (status != PJ_SUCCESS)
return status;
+ // Apply QoS
+ status = pj_sock_apply_qos2(sock_, qos_type_, &qos_params_,
+ 2, THIS_FILE, NULL);
+
RSocket &rSock = ((CPjSocket*)sock_)->Socket();
local_addr_ = local_addr;
@@ -412,6 +423,12 @@ struct pj_ssl_sock_t
pj_sockaddr local_addr;
pj_sockaddr rem_addr;
+ /* QoS settings */
+ pj_qos_type qos_type;
+ pj_qos_params qos_params;
+ pj_bool_t qos_ignore_error;
+
+
pj_ssl_sock_proto proto;
pj_time_val timeout;
unsigned ciphers_num;
@@ -502,6 +519,11 @@ PJ_DEF(pj_status_t) pj_ssl_sock_create (pj_pool_t *pool,
}
pj_strdup_with_null(pool, &ssock->servername, &param->server_name);
+ ssock->qos_type = param->qos_type;
+ ssock->qos_ignore_error = param->qos_ignore_error;
+ pj_memcpy(&ssock->qos_params, &param->qos_params,
+ sizeof(param->qos_params));
+
/* Finally */
*p_ssock = ssock;
@@ -1061,7 +1083,8 @@ PJ_DEF(pj_status_t) pj_ssl_sock_start_connect (pj_ssl_sock_t *ssock,
pj_sockaddr_cp((pj_sockaddr_t*)&ssock->rem_addr, remaddr);
/* Init SSL engine */
- TRAPD(err, sock = CPjSSLSocket::NewL(proto));
+ TRAPD(err, sock = CPjSSLSocket::NewL(proto, ssock->qos_type,
+ ssock->qos_params));
if (err != KErrNone)
return PJ_ENOMEM;