Changeset 10648
- Timestamp:
- 04/06/15 19:58:29 (9 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/module-gbox.c
r10645 r10648 1246 1246 uint32_t waittime = args->waittime; 1247 1247 1248 if (!cli) { return NULL; } 1248 //NEEDFIX currently the next line avoids a second rebroadcast 1249 if (!is_valid_client(cli)) { return NULL; } 1250 1251 pthread_mutex_lock(&cli->thread_lock); 1252 cli->thread_active = 1; 1249 1253 pthread_setspecific(getclient, cli); 1250 1254 set_thread_name(__func__); 1251 1255 cli->thread_active = 0; 1256 pthread_mutex_unlock(&cli->thread_lock); 1257 1252 1258 cs_sleepms(waittime); 1253 if (!cli || !cli->gbox || !er) { return NULL; } 1259 if (!cli || cli->kill || !cli->gbox || !er) { return NULL; } 1260 pthread_mutex_lock(&cli->thread_lock); 1261 cli->thread_active = 1; 1254 1262 1255 1263 struct gbox_peer *peer = cli->gbox; … … 1269 1277 cs_writeunlock(&peer->lock); 1270 1278 } 1279 cli->thread_active = 0; 1280 pthread_mutex_unlock(&cli->thread_lock); 1271 1281 1272 1282 return NULL; … … 1419 1429 //Create thread to rebroacast ecm after time 1420 1430 pthread_t rbc_thread; 1431 pthread_attr_t attr; 1432 pthread_attr_init(&attr); 1433 pthread_attr_setstacksize(&attr, PTHREAD_STACK_SIZE); 1421 1434 struct gbox_rbc_thread_args args; 1422 1435 args.cli = cli; 1423 1436 args.er = er; 1424 1437 if ((current_avg_card_time > 0) && (cont_card_1 == 1)) 1425 { args.waittime = current_avg_card_time + (current_avg_card_time / 2); } 1438 { 1439 args.waittime = current_avg_card_time + (current_avg_card_time / 2); 1440 if (args.waittime < GBOX_MIN_REBROADCAST_TIME) 1441 { args.waittime = GBOX_MIN_REBROADCAST_TIME; } 1442 } 1426 1443 else 1427 1444 { args.waittime = GBOX_REBROADCAST_TIMEOUT; } 1428 1445 cs_log_dbg(D_READER, "Creating rebroadcast thread with waittime: %d", args.waittime); 1429 int32_t ret = pthread_create(&rbc_thread, NULL, (void *)gbox_rebroadcast_thread, &args);1446 int32_t ret = pthread_create(&rbc_thread, &attr, (void *)gbox_rebroadcast_thread, &args); 1430 1447 if(ret) 1431 1448 { 1432 1449 cs_log("Can't create gbox rebroadcast thread (errno=%d %s)", ret, strerror(ret)); 1450 pthread_attr_destroy(&attr); 1433 1451 return -1; 1434 1452 } 1435 1453 else 1436 1454 { pthread_detach(rbc_thread); } 1455 pthread_attr_destroy(&attr); 1437 1456 } 1438 1457 else -
trunk/module-gbox.h
r10644 r10648 20 20 #define CS_GBOX_MAX_LOCAL_CARDS 16 21 21 #define GBOX_REBROADCAST_TIMEOUT 1250 22 #define GBOX_MIN_REBROADCAST_TIME 100 22 23 #define GBOX_SID_CONFIRM_TIME 3600 23 24 #define GBOX_DEFAULT_CW_TIME 500
Note:
See TracChangeset
for help on using the changeset viewer.