Call open/close functions of terminal instance before openning channel 73/19573/1 accepted/tizen_3.0.2014.q3_common accepted/tizen_3.0.m14.3_ivi tizen_3.0.2014.q3_common tizen_3.0.m14.2_ivi tizen_3.0.m14.3_ivi accepted/tizen/common/20140506.134707 accepted/tizen/ivi/20140519.063505 accepted/tizen/mobile/20141022.225013 submit/tizen/20140506.101200 submit/tizen_common/20150109.133122 submit/tizen_mobile/20141120.000000 tizen_3.0.2014.q3_common_release tizen_3.0.m14.2_ivi_release tizen_3.0.m14.3_ivi_release
authorWonkyu Kwon <wonkyu.kwon@samsung.com>
Wed, 16 Oct 2013 04:15:31 +0000 (13:15 +0900)
committerJi-hoon Jung <jh8801.jung@samsung.com>
Wed, 16 Apr 2014 00:46:13 +0000 (09:46 +0900)
or getting ATR

Change-Id: I39ca32471efff9603c6f60cea245d66b564b1c02
Signed-off-by: Ji-hoon Jung <jh8801.jung@samsung.com>
packaging/smartcard-service.spec
server/ServerGDBus.cpp
server/ServerResource.cpp
server/ServerSession.cpp

index bf21ac6..84e86b9 100644 (file)
@@ -4,7 +4,7 @@
 
 Name:       smartcard-service
 Summary:    Smartcard Service
-Version:    0.1.29
+Version:    0.1.30
 Release:    0
 Group:      Network & Connectivity/Service
 License:    Apache-2.0
index 5f68c03..f0f1b08 100644 (file)
@@ -856,12 +856,19 @@ namespace smartcard_service_api
                        if (terminal != NULL) {
                                int rv;
 
-                               if ((rv = terminal->getATRSync(resp)) == 0) {
-                                       result = SCARD_ERROR_OK;
+                               if (terminal->open() == true) {
+                                       rv = terminal->getATRSync(resp);
+                                       if (rv < SCARD_ERROR_OK) {
+                                               _ERR("getATRSync failed : name [%s], service_id [%d], session_id [%d]", name, service_id, session_id);
+
+                                               result = rv;
+                                       }
+
+                                       terminal->close();
                                } else {
-                                       _ERR("getATRSync failed : name [%s], service_id [%d], session_id [%d]", name, service_id, session_id);
+                                       _ERR("terminal->open failed");
 
-                                       result = rv;
+                                       result = SCARD_ERROR_UNAVAILABLE;
                                }
                        } else {
                                _ERR("getTerminal failed : name [%s], service_id [%d], session_id [%d]", name, service_id, session_id);
index 790abdc..9b72607 100644 (file)
@@ -336,10 +336,17 @@ namespace smartcard_service_api
                                session = service->getSession(sessionID);
                                if (terminal != NULL && session != NULL)
                                {
-                                       result = _createChannel(terminal, service, channelType, sessionID, aid);
-                                       if (result == IntegerHandle::INVALID_HANDLE)
-                                       {
-                                               _ERR("create channel failed [%d]", sessionID);
+                                       if (terminal->open() == true) {
+                                               result = _createChannel(terminal, service, channelType, sessionID, aid);
+                                               if (result == IntegerHandle::INVALID_HANDLE)
+                                               {
+                                                       _ERR("create channel failed [%d]", sessionID);
+
+                                                       terminal->close();
+                                               }
+                                       } else {
+                                               _ERR("terminal open failed");
+                                               throw ExceptionBase(SCARD_ERROR_UNAVAILABLE);
                                        }
                                }
                                else
@@ -386,7 +393,19 @@ namespace smartcard_service_api
 
                if ((instance = getService(name, handle)) != NULL)
                {
+                       ServerChannel *channel;
+                       Terminal *terminal = NULL;
+
+                       channel = instance->getChannel(channelID);
+                       if (channel != NULL) {
+                               terminal = channel->getTerminal();
+                       }
+
                        instance->closeChannel(channelID);
+
+                       if (terminal != NULL) {
+                               terminal->close();
+                       }
                }
                else
                {
index fcbc37a..0c73fe8 100644 (file)
@@ -59,10 +59,16 @@ namespace smartcard_service_api
                /* call get atr to terminal */
                if (atr.isEmpty()) {
                        if (terminal != NULL) {
-                               int error = terminal->getATRSync(atr);
+                               if (terminal->open() == true) {
+                                       int error = terminal->getATRSync(atr);
 
-                               if (error < SCARD_ERROR_OK) {
-                                       _ERR("getATRSync failed, [%d]", error);
+                                       if (error < SCARD_ERROR_OK) {
+                                               _ERR("getATRSync failed, [%d]", error);
+                                       }
+
+                                       terminal->close();
+                               } else {
+                                       _ERR("terminal->open failed");
                                }
                        } else {
                                _ERR("terminal is null.");