./ MultiCS.r82 / cli-common.c
int srv_sharelimits(struct server_data *srv, uint16_t caid, uint32_t provid) { int i; int uphops1 = 10; // for 0:0 int uphops2 = 10; // for caid:0 for (i=0; i<100; i++) { if (srv->sharelimits[i].caid==0xffff) break; if (!srv->sharelimits[i].caid) { if (!srv->sharelimits[i].provid) uphops1 = srv->sharelimits[i].uphops; } else if (srv->sharelimits[i].caid==caid) { if (srv->sharelimits[i].provid==provid) return srv->sharelimits[i].uphops; else if (!srv->sharelimits[i].provid) uphops2 = srv->sharelimits[i].uphops; } } if (uphops2<uphops1) return uphops2; else return uphops1;// Max UPHOPS } struct server_data *getsrvbyid(uint32_t id) { if (!id) return NULL; struct server_data *srv = cfg.server; while (srv) { if (srv->id==id) return srv; srv = srv->next; } srv = cfg.cacheexserver; while (srv) { if (srv->id==id) return srv; srv = srv->next; } return NULL; } struct server_data *getcesrvbyid(uint32_t id) { if (!id) return NULL; struct server_data *srv = cfg.cacheexserver; while (srv) { if (srv->id==id) return srv; srv = srv->next; } return NULL; } char *getsrvtype(struct server_data *srv) { static char *_cccam = "CCcam"; static char *_newcamd = "newcamd"; static char *_radegast = "radegast"; static char *_camd35 = "camd35"; static char *_cs378x = "cs378x"; if (srv->type==TYPE_CCCAM) return _cccam; else if (srv->type==TYPE_NEWCAMD) return _newcamd; else if (srv->type==TYPE_RADEGAST) return _radegast; else if (srv->type==TYPE_CAMD35) return _camd35; else if (srv->type==TYPE_CS378X) return _cs378x; else return NULL; } void disconnect_srv(struct server_data *srv) { static char msg[]= "Disconnected"; srv->statmsg = msg; // close handle close(srv->handle); srv->handle = -1; // Set connection data srv->connection.status = 0; uint32_t ticks = GetTickCount(); srv->connection.uptime += ticks - srv->connection.time; srv->connection.lastseen = ticks; // Last Seen srv->connection.delay = 0; // Remove Cards & ecm requests #ifdef CACHEEX if (!srv->cacheex_mode) #endif { if (srv->busy) ecm_setsrvflag(srv->ecm.request, srv->id, ECM_SRV_EXCLUDE); pthread_mutex_lock( &srv->lock ); free_cardlist(srv->card); srv->card = NULL; pthread_mutex_unlock( &srv->lock ); } // update server data srv->busy = 0; srv->host->checkiptime = 15; // maybe ip changed memset( &srv->keepalive, 0, sizeof(srv->keepalive) ); // Debug debugf( getdbgflag(DBG_SERVER,0,srv->id)," %s server (%s:%d) disconnected\n", getsrvtype(srv), srv->host->name, srv->port); }