Changeset 4994 for trunk/oscam-reader.c
- Timestamp:
- 04/13/11 23:19:59 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/oscam-reader.c
r4964 r4994 1 1 #include "globals.h" 2 2 3 int logfd=0;3 int32_t logfd=0; 4 4 5 5 void reader_do_idle(struct s_reader * reader); 6 6 7 void cs_ri_brk(struct s_reader * reader, int flag)7 void cs_ri_brk(struct s_reader * reader, int32_t flag) 8 8 { 9 9 if (flag) … … 24 24 25 25 if (cfg.saveinithistory) { 26 int size = reader->init_history_pos+strlen(txt)+2;26 int32_t size = reader->init_history_pos+strlen(txt)+2; 27 27 28 28 cs_realloc(&reader->init_history, size, -1); … … 36 36 } 37 37 38 static void casc_check_dcw(struct s_reader * reader, int idx, int rc, uchar *cw)39 { 40 int i;38 static void casc_check_dcw(struct s_reader * reader, int32_t idx, int32_t rc, uchar *cw) 39 { 40 int32_t i; 41 41 struct s_client *cl = reader->client; 42 42 for (i=0; i<CS_MAXPENDING; i++) … … 58 58 } 59 59 60 int casc_recv_timer(struct s_reader * reader, uchar *buf, int l, int msec)60 int32_t casc_recv_timer(struct s_reader * reader, uchar *buf, int32_t l, int32_t msec) 61 61 { 62 62 struct timeval tv; 63 63 fd_set fds; 64 int rc;64 int32_t rc; 65 65 struct s_client *cl = reader->client; 66 66 … … 88 88 #define DEFAULT_CONNECT_TIMEOUT 500 89 89 90 int network_select(int forRead, int timeout)90 int32_t network_select(int32_t forRead, int32_t timeout) 91 91 { 92 int sd = cur_client()->udp_fd;92 int32_t sd = cur_client()->udp_fd; 93 93 if(sd>=0) { 94 94 fd_set fds; … … 97 97 if(timeout&MSTIMEOUT) { tv.tv_sec=0; tv.tv_usec=(timeout&~MSTIMEOUT)*1000; } 98 98 else { tv.tv_sec=0; tv.tv_usec=timeout*1000; } 99 int r=select(sd+1,forRead ? &fds:0,forRead ? 0:&fds,0,&tv);99 int32_t r=select(sd+1,forRead ? &fds:0,forRead ? 0:&fds,0,&tv); 100 100 if(r>0) return 1; 101 101 else if(r<0) { … … 115 115 116 116 // according to documentation getaddrinfo() is thread safe 117 int hostResolve(struct s_reader *rdr)118 { 119 int result = 0;117 int32_t hostResolve(struct s_reader *rdr) 118 { 119 int32_t result = 0; 120 120 struct s_client *cl = rdr->client; 121 121 … … 142 142 hints.ai_protocol = IPPROTO_TCP; 143 143 144 int err = getaddrinfo(rdr->device, NULL, &hints, &res);144 int32_t err = getaddrinfo(rdr->device, NULL, &hints, &res); 145 145 if (err != 0 || !res || !res->ai_addr) { 146 146 cs_log("can't resolve %s, error: %s", rdr->device, err ? gai_strerror(err) : "unknown"); … … 182 182 } 183 183 184 int is_connect_blocked(struct s_reader *rdr) {184 int32_t is_connect_blocked(struct s_reader *rdr) { 185 185 struct timeb cur_time; 186 186 cs_ftime(&cur_time); … … 188 188 } 189 189 190 int network_tcp_connection_open()190 int32_t network_tcp_connection_open() 191 191 { 192 192 struct s_client *cl = cur_client(); … … 205 205 } 206 206 207 int flag = 1;207 int32_t flag = 1; 208 208 setsockopt(cl->udp_fd, IPPROTO_TCP, TCP_NODELAY, (char *) &flag, sizeof(int)); 209 209 210 int sd = cl->udp_fd;211 int fl = fcntl(sd, F_GETFL);210 int32_t sd = cl->udp_fd; 211 int32_t fl = fcntl(sd, F_GETFL); 212 212 fcntl(sd, F_SETFL, O_NONBLOCK); //set to nonblocking mode to avoid "endless" connecting loops and pipe-overflows: 213 int res =connect(sd, (struct sockaddr *)&cl->udp_sa, sizeof(cl->udp_sa));213 int32_t res =connect(sd, (struct sockaddr *)&cl->udp_sa, sizeof(cl->udp_sa)); 214 214 if (res == 0) { 215 215 fcntl(sd, F_SETFL, fl); //connect sucessfull, restore blocking mode … … 220 220 if (errno == EINPROGRESS || errno == EALREADY) { 221 221 if (network_select(0, DEFAULT_CONNECT_TIMEOUT) > 0) { //if connect is in progress, wait apr. 500ms 222 int r = -1;223 uint l = sizeof(r);222 int32_t r = -1; 223 uint32_t l = sizeof(r); 224 224 if (getsockopt(sd, SOL_SOCKET, SO_ERROR, &r, (socklen_t*)&l) == 0) { 225 225 if (r == 0) { … … 264 264 } 265 265 266 void network_tcp_connection_close(struct s_client *cl, int fd)266 void network_tcp_connection_close(struct s_client *cl, int32_t fd) 267 267 { 268 268 if(!cl) return; … … 281 281 if (cl->typ != 'c') 282 282 { 283 int i;283 int32_t i; 284 284 //cl->pfd = 0; 285 285 if(reader) … … 307 307 static void casc_do_sock_log(struct s_reader * reader) 308 308 { 309 int i, idx;310 u short caid, srvid;311 u longprovid;309 int32_t i, idx; 310 uint16_t caid, srvid; 311 uint32_t provid; 312 312 struct s_client *cl = reader->client; 313 313 … … 330 330 } 331 331 332 static void casc_do_sock(struct s_reader * reader, int w)333 { 334 int i, n, idx, rc, j;332 static void casc_do_sock(struct s_reader * reader, int32_t w) 333 { 334 int32_t i, n, idx, rc, j; 335 335 uchar buf[1024]; 336 336 uchar dcw[16]; … … 370 370 } 371 371 372 static void casc_get_dcw(struct s_reader * reader, int n)373 { 374 int w;372 static void casc_get_dcw(struct s_reader * reader, int32_t n) 373 { 374 int32_t w; 375 375 struct timeb tps, tpe; 376 376 struct s_client *cl = reader->client; … … 394 394 395 395 396 int casc_process_ecm(struct s_reader * reader, ECM_REQUEST *er)397 { 398 int rc, n, i, sflag;396 int32_t casc_process_ecm(struct s_reader * reader, ECM_REQUEST *er) 397 { 398 int32_t rc, n, i, sflag; 399 399 time_t t;//, tls; 400 400 struct s_client *cl = reader->client; … … 405 405 for (n=-1, i=0, sflag=1; i<CS_MAXPENDING; i++) 406 406 { 407 if ((t-(u long)cl->ecmtask[i].tps.time > ((cfg.ctimeout + 500) / 1000) + 1) &&407 if ((t-(uint32_t)cl->ecmtask[i].tps.time > ((cfg.ctimeout + 500) / 1000) + 1) && 408 408 (cl->ecmtask[i].rc>=10)) // drop timeouts 409 409 { … … 437 437 if( reader->ph.type==MOD_CONN_TCP && reader->tcp_rto ) 438 438 { 439 int rto = abs(reader->last_s - reader->last_g);439 int32_t rto = abs(reader->last_s - reader->last_g); 440 440 if (rto >= (reader->tcp_rto*60)) 441 441 { … … 469 469 } 470 470 471 static int reader_store_emm(uchar *emm, uchar type)472 { 473 int rc;471 static int32_t reader_store_emm(uchar *emm, uchar type) 472 { 473 int32_t rc; 474 474 struct s_client *cl = cur_client(); 475 475 memcpy(cl->emmcache[cl->rotate].emmd5, MD5(emm, emm[2], cl->dump), CS_EMMSTORESIZE); … … 518 518 if (reader->ratelimitecm) { 519 519 cs_debug_mask(D_READER, "ratelimit idx:%d rc:%d caid:%04X srvid:%04X",er->idx,er->rc,er->caid,er->srvid); 520 int foundspace=-1;521 int h;520 int32_t foundspace=-1; 521 int32_t h; 522 522 for (h=0;h<reader->ratelimitecm;h++) { 523 523 if (reader->rlecmh[h].srvid == er->srvid) { … … 541 541 er->rcEx=32; 542 542 er->rc = E_RDR_NOTFOUND; 543 int clcw;543 int32_t clcw; 544 544 for (clcw=0;clcw<16;clcw++) er->cw[clcw]=(uchar)0; 545 545 snprintf( er->msglog, MSGLOGSIZE, "ECMratelimit no space for srvid" ); … … 559 559 cs_ftime(&tpe); 560 560 if (cs_dblevel) { 561 u short lc, *lp;562 for (lp=(u short *)er->ecm+(er->l>>2), lc=0; lp>=(ushort *)er->ecm; lp--)561 uint16_t lc, *lp; 562 for (lp=(uint16_t *)er->ecm+(er->l>>2), lc=0; lp>=(uint16_t *)er->ecm; lp--) 563 563 lc^=*lp; 564 564 cs_debug_mask(D_TRACE, "reader: %s ecm: %04X real time: %d ms", reader->label, lc, 1000*(tpe.time-tps.time)+tpe.millitm-tps.millitm); … … 569 569 } 570 570 571 static int reader_do_emm(struct s_reader * reader, EMM_PACKET *ep)572 { 573 int i, no, rc, ecs;571 static int32_t reader_do_emm(struct s_reader * reader, EMM_PACKET *ep) 572 { 573 int32_t i, no, rc, ecs; 574 574 char *rtxt[] = { "error", (reader->typ & R_IS_CASCADING) ? "sent" : "written", "skipped", "blocked" }; 575 575 char *typedesc[]= { "unknown", "unique", "shared", "global" }; … … 661 661 } 662 662 663 static int reader_listen(struct s_reader * reader, int fd1, int fd2)664 { 665 int fdmax, tcp_toflag, use_tv=(!(reader->typ & R_IS_CASCADING));666 int is_tcp=(reader->ph.type==MOD_CONN_TCP);663 static int32_t reader_listen(struct s_reader * reader, int32_t fd1, int32_t fd2) 664 { 665 int32_t fdmax, tcp_toflag, use_tv=(!(reader->typ & R_IS_CASCADING)); 666 int32_t is_tcp=(reader->ph.type==MOD_CONN_TCP); 667 667 fd_set fds; 668 668 struct timeval tv; … … 702 702 { 703 703 time_t now; 704 int time_diff;704 int32_t time_diff; 705 705 time(&now); 706 706 time_diff = abs(now-reader->last_s); … … 750 750 { 751 751 uchar *ptr; 752 int pipeCmd;752 int32_t pipeCmd; 753 753 while (reader && reader->client && reader->client->fd_m2c_c) 754 754 { … … 763 763 { 764 764 uchar *ptr; 765 int pipeCmd = read_from_pipe(reader->client->fd_m2c_c, &ptr, 0);765 int32_t pipeCmd = read_from_pipe(reader->client->fd_m2c_c, &ptr, 0); 766 766 767 767 switch(pipeCmd)
Note:
See TracChangeset
for help on using the changeset viewer.