36 // Assume the server is already running and attempt to create a session |
36 // Assume the server is already running and attempt to create a session |
37 // 4 message slots |
37 // 4 message slots |
38 TInt err = CreateSession(KDrmPluginServerName, TVersion(KMMFDRMPluginServerVersion, |
38 TInt err = CreateSession(KDrmPluginServerName, TVersion(KMMFDRMPluginServerVersion, |
39 KMMFDRMPluginServerMinorVersionNumber, |
39 KMMFDRMPluginServerMinorVersionNumber, |
40 KMMFDRMPluginServerBuildVersionNumber)); |
40 KMMFDRMPluginServerBuildVersionNumber)); |
41 if(err == KErrNotFound) |
41 if(err == KErrNotFound || err == KErrServerTerminated) |
42 { |
42 { |
43 // Server not running |
43 // Server not running |
44 // Construct the server binary name |
44 // Construct the server binary name |
45 TBuf<KMaxServerNameLength> serverFile; |
45 TBuf<KMaxServerNameLength> serverFile; |
46 RProcess server; |
46 RProcess server; |
47 |
47 |
48 err = server.Create(KDrmPluginServerFileName, KNullDesC, serverUid); |
48 err = server.Create(KDrmPluginServerFileName, KNullDesC, serverUid); |
49 if(err != KErrNone) |
49 if(err != KErrNone && err != KErrAlreadyExists) |
50 return err; |
50 return err; |
51 // Synchronise with the server |
51 // Synchronise with the server |
52 TRequestStatus reqStatus; |
52 TRequestStatus reqStatus; |
53 server.Rendezvous(reqStatus); |
53 server.Rendezvous(reqStatus); |
54 |
54 |