Changeset 10317
- Timestamp:
- 01/26/15 16:08:43 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/oscam-ecm.c
r10316 r10317 450 450 * search for same ecm hash with same readers 451 451 **/ 452 st ruct ecm_request_t *check_same_ecm(ECM_REQUEST *er)452 static struct ecm_request_t *check_same_ecm(ECM_REQUEST *er) 453 453 { 454 454 struct ecm_request_t *ecm; … … 497 497 } 498 498 499 500 void use_same_readers(ECM_REQUEST *er_new, ECM_REQUEST *er_cache) 499 static void use_same_readers(ECM_REQUEST *er_new, ECM_REQUEST *er_cache) 501 500 { 502 501 struct s_ecm_answer *ea_new = er_new->matching_rdr; … … 524 523 } 525 524 526 #endif 527 525 static void lb_set_best_reader(ECM_REQUEST *er) 526 { 527 if (!cfg.lb_mode) 528 return; 529 // cache2 is handled by readers queue, so, if a same ecm hash with same readers, use these same readers to get cache2 from them! Not ask other readers! 530 struct ecm_request_t *ecm_eq = NULL; 531 ecm_eq = check_same_ecm(er); 532 if(ecm_eq) 533 { 534 // set all readers used by ecm_eq, so we get cache2 from them! 535 use_same_readers(er, ecm_eq); 536 cs_log_dbg(D_LB, "{client %s, caid %04X, prid %06X, srvid %04X} [get_cw] found same ecm with same readers from client %s, use them!", (check_client(er->client) ? er->client->account->usr : "-"), er->caid, er->prid, er->srvid, (check_client(ecm_eq->client) ? ecm_eq->client->account->usr : "-")); 537 }else{ 538 // FILTER readers by loadbalancing 539 stat_get_best_reader(er); 540 } 541 } 542 #endif 528 543 529 544 … … 2474 2489 cs_readunlock(&readerlist_lock); 2475 2490 2476 2477 #ifdef WITH_LB 2478 if(cfg.lb_mode){ 2479 //cache2 is handled by readers queue, so, if a same ecm hash with same readers, use these same readers to get cache2 from them! Not ask other readers! 2480 struct ecm_request_t *ecm_eq = NULL; 2481 ecm_eq = check_same_ecm(er); 2482 if(ecm_eq) 2483 { 2484 //set all readers used by ecm_eq, so we get cache2 from them! 2485 use_same_readers(er, ecm_eq); 2486 cs_log_dbg(D_LB, "{client %s, caid %04X, prid %06X, srvid %04X} [get_cw] found same ecm with same readers from client %s, use them!", (check_client(er->client) ? er->client->account->usr : "-"), er->caid, er->prid, er->srvid, (check_client(ecm_eq->client) ? ecm_eq->client->account->usr : "-")); 2487 }else{ 2488 2489 //FILTER readers by loadbalancing 2490 stat_get_best_reader(er); 2491 } 2492 } 2493 #endif 2491 lb_set_best_reader(er); 2494 2492 2495 2493 //set reader_count and fallback_reader_count
Note:
See TracChangeset
for help on using the changeset viewer.