mirror of
https://github.com/moonlight-stream/moonlight-ios.git
synced 2026-06-17 14:11:35 +00:00
Fix pairing code that didn't always call one of the pairing completion callbacks
This commit is contained in:
@@ -53,6 +53,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// All codepaths must call pairFailed or pairSuccessful exactly once before returning!
|
||||||
- (void) initiatePair:(int)serverMajorVersion {
|
- (void) initiatePair:(int)serverMajorVersion {
|
||||||
Log(LOG_I, @"Pairing with generation %d server", serverMajorVersion);
|
Log(LOG_I, @"Pairing with generation %d server", serverMajorVersion);
|
||||||
|
|
||||||
@@ -64,6 +65,7 @@
|
|||||||
HttpResponse* pairResp = [[HttpResponse alloc] init];
|
HttpResponse* pairResp = [[HttpResponse alloc] init];
|
||||||
[_httpManager executeRequestSynchronously:[HttpRequest requestForResponse:pairResp withUrlRequest:[_httpManager newPairRequest:salt clientCert:_clientCert]]];
|
[_httpManager executeRequestSynchronously:[HttpRequest requestForResponse:pairResp withUrlRequest:[_httpManager newPairRequest:salt clientCert:_clientCert]]];
|
||||||
if (![self verifyResponseStatus:pairResp]) {
|
if (![self verifyResponseStatus:pairResp]) {
|
||||||
|
[_callback pairFailed:@"Pairing stage #1 failed"];
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
NSInteger pairedStatus;
|
NSInteger pairedStatus;
|
||||||
@@ -101,10 +103,9 @@
|
|||||||
|
|
||||||
HttpResponse* challengeResp = [[HttpResponse alloc] init];
|
HttpResponse* challengeResp = [[HttpResponse alloc] init];
|
||||||
[_httpManager executeRequestSynchronously:[HttpRequest requestForResponse:challengeResp withUrlRequest:[_httpManager newChallengeRequest:encryptedChallenge]]];
|
[_httpManager executeRequestSynchronously:[HttpRequest requestForResponse:challengeResp withUrlRequest:[_httpManager newChallengeRequest:encryptedChallenge]]];
|
||||||
if (![self verifyResponseStatus:challengeResp]) {
|
if (![self verifyResponseStatus:challengeResp] ||
|
||||||
return;
|
![challengeResp getIntTag:@"paired" value:&pairedStatus] ||
|
||||||
}
|
pairedStatus != 1) {
|
||||||
if (![challengeResp getIntTag:@"paired" value:&pairedStatus] || pairedStatus != 1) {
|
|
||||||
[_httpManager executeRequestSynchronously:[HttpRequest requestWithUrlRequest:[_httpManager newUnpairRequest]]];
|
[_httpManager executeRequestSynchronously:[HttpRequest requestWithUrlRequest:[_httpManager newUnpairRequest]]];
|
||||||
[_callback pairFailed:@"Pairing stage #2 failed"];
|
[_callback pairFailed:@"Pairing stage #2 failed"];
|
||||||
return;
|
return;
|
||||||
@@ -129,10 +130,9 @@
|
|||||||
|
|
||||||
HttpResponse* secretResp = [[HttpResponse alloc] init];
|
HttpResponse* secretResp = [[HttpResponse alloc] init];
|
||||||
[_httpManager executeRequestSynchronously:[HttpRequest requestForResponse:secretResp withUrlRequest:[_httpManager newChallengeRespRequest:challengeRespEncrypted]]];
|
[_httpManager executeRequestSynchronously:[HttpRequest requestForResponse:secretResp withUrlRequest:[_httpManager newChallengeRespRequest:challengeRespEncrypted]]];
|
||||||
if (![self verifyResponseStatus:secretResp]) {
|
if (![self verifyResponseStatus:secretResp] ||
|
||||||
return;
|
![secretResp getIntTag:@"paired" value:&pairedStatus] ||
|
||||||
}
|
pairedStatus != 1) {
|
||||||
if (![secretResp getIntTag:@"paired" value:&pairedStatus] || pairedStatus != 1) {
|
|
||||||
[_httpManager executeRequestSynchronously:[HttpRequest requestWithUrlRequest:[_httpManager newUnpairRequest]]];
|
[_httpManager executeRequestSynchronously:[HttpRequest requestWithUrlRequest:[_httpManager newUnpairRequest]]];
|
||||||
[_callback pairFailed:@"Pairing stage #3 failed"];
|
[_callback pairFailed:@"Pairing stage #3 failed"];
|
||||||
return;
|
return;
|
||||||
@@ -165,10 +165,9 @@
|
|||||||
NSData* clientPairingSecret = [self concatData:clientSecret with:[cryptoMan signData:clientSecret withKey:[CryptoManager readKeyFromFile]]];
|
NSData* clientPairingSecret = [self concatData:clientSecret with:[cryptoMan signData:clientSecret withKey:[CryptoManager readKeyFromFile]]];
|
||||||
HttpResponse* clientSecretResp = [[HttpResponse alloc] init];
|
HttpResponse* clientSecretResp = [[HttpResponse alloc] init];
|
||||||
[_httpManager executeRequestSynchronously:[HttpRequest requestForResponse:clientSecretResp withUrlRequest:[_httpManager newClientSecretRespRequest:[Utils bytesToHex:clientPairingSecret]]]];
|
[_httpManager executeRequestSynchronously:[HttpRequest requestForResponse:clientSecretResp withUrlRequest:[_httpManager newClientSecretRespRequest:[Utils bytesToHex:clientPairingSecret]]]];
|
||||||
if (![self verifyResponseStatus:clientSecretResp]) {
|
if (![self verifyResponseStatus:clientSecretResp] ||
|
||||||
return;
|
![clientSecretResp getIntTag:@"paired" value:&pairedStatus] ||
|
||||||
}
|
pairedStatus != 1) {
|
||||||
if (![clientSecretResp getIntTag:@"paired" value:&pairedStatus] || pairedStatus != 1) {
|
|
||||||
[_httpManager executeRequestSynchronously:[HttpRequest requestWithUrlRequest:[_httpManager newUnpairRequest]]];
|
[_httpManager executeRequestSynchronously:[HttpRequest requestWithUrlRequest:[_httpManager newUnpairRequest]]];
|
||||||
[_callback pairFailed:@"Pairing stage #4 failed"];
|
[_callback pairFailed:@"Pairing stage #4 failed"];
|
||||||
return;
|
return;
|
||||||
@@ -176,10 +175,9 @@
|
|||||||
|
|
||||||
HttpResponse* clientPairChallengeResp = [[HttpResponse alloc] init];
|
HttpResponse* clientPairChallengeResp = [[HttpResponse alloc] init];
|
||||||
[_httpManager executeRequestSynchronously:[HttpRequest requestForResponse:clientPairChallengeResp withUrlRequest:[_httpManager newPairChallenge]]];
|
[_httpManager executeRequestSynchronously:[HttpRequest requestForResponse:clientPairChallengeResp withUrlRequest:[_httpManager newPairChallenge]]];
|
||||||
if (![self verifyResponseStatus:clientPairChallengeResp]) {
|
if (![self verifyResponseStatus:clientPairChallengeResp] ||
|
||||||
return;
|
![clientPairChallengeResp getIntTag:@"paired" value:&pairedStatus] ||
|
||||||
}
|
pairedStatus != 1) {
|
||||||
if (![clientPairChallengeResp getIntTag:@"paired" value:&pairedStatus] || pairedStatus != 1) {
|
|
||||||
[_httpManager executeRequestSynchronously:[HttpRequest requestWithUrlRequest:[_httpManager newUnpairRequest]]];
|
[_httpManager executeRequestSynchronously:[HttpRequest requestWithUrlRequest:[_httpManager newUnpairRequest]]];
|
||||||
[_callback pairFailed:@"Pairing stage #5 failed"];
|
[_callback pairFailed:@"Pairing stage #5 failed"];
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user