@@ -633,7 +633,8 @@ void ConnectionsManager::cleanUp(bool resetKeys, int32_t datacenterId) {
633
633
auto error = new TL_error ();
634
634
error->code = -1000 ;
635
635
error->text = " " ;
636
- request->onComplete (nullptr , error, 0 , 0 , request->messageId );
636
+ int32_t dcId = request->datacenterId != DEFAULT_DATACENTER_ID ? request->datacenterId : currentDatacenterId;
637
+ request->onComplete (nullptr , error, 0 , 0 , request->messageId , dcId);
637
638
delete error;
638
639
}
639
640
iter = requestsQueue.erase (iter);
@@ -655,7 +656,8 @@ void ConnectionsManager::cleanUp(bool resetKeys, int32_t datacenterId) {
655
656
auto error = new TL_error ();
656
657
error->code = -1000 ;
657
658
error->text = " " ;
658
- request->onComplete (nullptr , error, 0 , 0 , request->messageId );
659
+ int32_t dcId = request->datacenterId != DEFAULT_DATACENTER_ID ? request->datacenterId : currentDatacenterId;
660
+ request->onComplete (nullptr , error, 0 , 0 , request->messageId , dcId);
659
661
delete error;
660
662
}
661
663
DEBUG_D (" 1) erase request %d 0x%" PRIx64, request->requestToken , request->messageId );
@@ -1214,7 +1216,8 @@ void ConnectionsManager::processServerResponse(TLObject *message, int64_t messag
1214
1216
for (auto iter = runningRequests.begin (); iter != runningRequests.end (); iter++) {
1215
1217
Request *request = iter->get ();
1216
1218
if (request->respondsToMessageId (requestMid)) {
1217
- request->onComplete (response, nullptr , connection->currentNetworkType , timeMessage, requestMid);
1219
+ int32_t dcId = request->datacenterId != DEFAULT_DATACENTER_ID ? request->datacenterId : currentDatacenterId;
1220
+ request->onComplete (response, nullptr , connection->currentNetworkType , timeMessage, requestMid, dcId);
1218
1221
request->completed = true ;
1219
1222
DEBUG_D (" 4) erase request %d 0x%" PRIx64, request->requestToken , request->messageId );
1220
1223
runningRequests.erase (iter);
@@ -1459,12 +1462,13 @@ void ConnectionsManager::processServerResponse(TLObject *message, int64_t messag
1459
1462
}
1460
1463
1461
1464
if (!discardResponse) {
1465
+ int32_t dcId = request->datacenterId != DEFAULT_DATACENTER_ID ? request->datacenterId : currentDatacenterId;
1462
1466
if (implicitError != nullptr || error2 != nullptr ) {
1463
1467
isError = true ;
1464
- request->onComplete (nullptr , implicitError != nullptr ? implicitError : error2, connection->currentNetworkType , timeMessage, request->messageId );
1468
+ request->onComplete (nullptr , implicitError != nullptr ? implicitError : error2, connection->currentNetworkType , timeMessage, request->messageId , dcId );
1465
1469
delete error2;
1466
1470
} else {
1467
- request->onComplete (response->result .get (), nullptr , connection->currentNetworkType , timeMessage, request->messageId );
1471
+ request->onComplete (response->result .get (), nullptr , connection->currentNetworkType , timeMessage, request->messageId , dcId );
1468
1472
}
1469
1473
}
1470
1474
@@ -2113,7 +2117,7 @@ bool ConnectionsManager::cancelRequestInternal(int32_t token, int64_t messageId,
2113
2117
auto dropAnswer = new TL_rpc_drop_answer ();
2114
2118
dropAnswer->req_msg_id = request->messageId ;
2115
2119
if (onCancelled != nullptr ) {
2116
- sendRequest (dropAnswer, ([onCancelled](TLObject *response, TL_error *error, int32_t networkType, int64_t responseTime, int64_t msgId) -> void {
2120
+ sendRequest (dropAnswer, ([onCancelled](TLObject *response, TL_error *error, int32_t networkType, int64_t responseTime, int64_t msgId, int32_t dcId ) -> void {
2117
2121
if (onCancelled != nullptr ) {
2118
2122
onCancelled ();
2119
2123
}
@@ -2170,7 +2174,8 @@ void ConnectionsManager::failNotRunningRequest(int32_t token) {
2170
2174
auto error = new TL_error ();
2171
2175
error->code = -2000 ;
2172
2176
error->text = " CANCELLED_REQUEST" ;
2173
- request->onComplete (nullptr , error, 0 , 0 , request->messageId );
2177
+ int32_t dcId = request->datacenterId != DEFAULT_DATACENTER_ID ? request->datacenterId : currentDatacenterId;
2178
+ request->onComplete (nullptr , error, 0 , 0 , request->messageId , dcId);
2174
2179
2175
2180
request->cancelled = true ;
2176
2181
if (LOGS_ENABLED) DEBUG_D (" cancelled queued rpc request %p - %s" , request->rawRequest , typeid (*request->rawRequest ).name ());
@@ -2313,7 +2318,7 @@ void ConnectionsManager::requestSaltsForDatacenter(Datacenter *datacenter, bool
2313
2318
requestingSaltsForDc.push_back (id);
2314
2319
auto request = new TL_get_future_salts ();
2315
2320
request->num = 32 ;
2316
- sendRequest (request, [&, datacenter, id, media](TLObject *response, TL_error *error, int32_t networkType, int64_t responseTime, int64_t msgId) {
2321
+ sendRequest (request, [&, datacenter, id, media](TLObject *response, TL_error *error, int32_t networkType, int64_t responseTime, int64_t msgId, int32_t dcId ) {
2317
2322
auto iter = std::find (requestingSaltsForDc.begin (), requestingSaltsForDc.end (), id);
2318
2323
if (iter != requestingSaltsForDc.end ()) {
2319
2324
requestingSaltsForDc.erase (iter);
@@ -2348,7 +2353,7 @@ void ConnectionsManager::registerForInternalPushUpdates() {
2348
2353
request->token_type = 7 ;
2349
2354
request->token = to_string_uint64 ((uint64_t ) pushSessionId);
2350
2355
2351
- sendRequest (request, [&](TLObject *response, TL_error *error, int32_t networkType, int64_t responseTime, int64_t msgId) {
2356
+ sendRequest (request, [&](TLObject *response, TL_error *error, int32_t networkType, int64_t responseTime, int64_t msgId, int32_t dcId ) {
2352
2357
if (error == nullptr ) {
2353
2358
registeredForInternalPush = true ;
2354
2359
if (LOGS_ENABLED) DEBUG_D (" registered for internal push" );
@@ -2571,7 +2576,8 @@ void ConnectionsManager::processRequestQueue(uint32_t connectionTypes, uint32_t
2571
2576
auto error = new TL_error ();
2572
2577
error->code = -123 ;
2573
2578
error->text = " RETRY_LIMIT" ;
2574
- request->onComplete (nullptr , error, connection->currentNetworkType , 0 , request->messageId );
2579
+ int32_t dcId = request->datacenterId != DEFAULT_DATACENTER_ID ? request->datacenterId : currentDatacenterId;
2580
+ request->onComplete (nullptr , error, connection->currentNetworkType , 0 , request->messageId , dcId);
2575
2581
delete error;
2576
2582
DEBUG_D (" 12) erase request %d 0x%" PRIx64, request->requestToken , request->messageId );
2577
2583
iter = runningRequests.erase (iter);
@@ -3282,7 +3288,7 @@ void ConnectionsManager::updateDcSettings(uint32_t dcNum, bool workaround, bool
3282
3288
}
3283
3289
3284
3290
auto request = new TL_help_getConfig ();
3285
- sendRequest (request, [&, workaround](TLObject *response, TL_error *error, int32_t networkType, int64_t responseTime, int64_t msgId) {
3291
+ sendRequest (request, [&, workaround](TLObject *response, TL_error *error, int32_t networkType, int64_t responseTime, int64_t msgId, int32_t dcId ) {
3286
3292
if ((!workaround && !updatingDcSettings) || (workaround && !updatingDcSettingsWorkaround)) {
3287
3293
return ;
3288
3294
}
@@ -3431,7 +3437,7 @@ void ConnectionsManager::authorizeOnMovingDatacenter() {
3431
3437
auto request = new TL_auth_importAuthorization ();
3432
3438
request->id = currentUserId;
3433
3439
request->bytes = std::move (movingAuthorization);
3434
- sendRequest (request, [&](TLObject *response, TL_error *error, int32_t networkType, int64_t responseTime, int64_t msgId) {
3440
+ sendRequest (request, [&](TLObject *response, TL_error *error, int32_t networkType, int64_t responseTime, int64_t msgId, int32_t dcId ) {
3435
3441
if (error == nullptr ) {
3436
3442
authorizedOnMovingDatacenter ();
3437
3443
} else {
0 commit comments