Changeset 2072
- Timestamp:
- 04/13/10 14:36:03 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/oscam.c
r2071 r2072 956 956 static void cs_client_resolve() 957 957 { 958 while (1) 959 { 960 struct hostent *rht; 961 struct s_auth *account; 962 struct sockaddr_in udp_sa; 963 964 for (account=cfg->account; account; account=account->next) 965 if (account->dyndns[0]) 966 { 967 rht=gethostbyname((const char *)account->dyndns); 968 if (rht) 969 { 970 memcpy(&udp_sa.sin_addr, rht->h_addr, sizeof(udp_sa.sin_addr)); 971 account->dynip=cs_inet_order(udp_sa.sin_addr.s_addr); 972 } 973 else 974 cs_log("can't resolve hostname %s (user: %s)", account->dyndns, account->usr); 975 client[cs_idx].last=time((time_t)0); 976 } 977 sleep(cfg->resolvedelay); 978 } 979 } 980 981 static void start_client_resolver() 982 { 983 int i; 984 pthread_t tid; 985 986 i=pthread_create(&tid, (pthread_attr_t *)0, (void *)&cs_client_resolve, (void *) 0); 987 if (i) 988 cs_log("ERROR: can't create client resolver-thread (err=%d)", i); 989 else 990 { 991 cs_log("client resolver thread started"); 992 pthread_detach(tid); 993 } 994 } 995 996 static void loop_resolver() 997 { 998 cs_sleepms(1000); // wait for reader 999 while(1) 1000 { 1001 cs_resolve(); 1002 cs_sleepms(1000*cfg->resolvedelay); 1003 } 1004 } 1005 1006 static void start_resolver() 1007 { 1008 int i; 1009 pthread_t tid; 1010 1011 i=pthread_create(&tid, (pthread_attr_t *)0, (void *)&loop_resolver, (void *) 0); 1012 if (i) 1013 cs_log("ERROR: can't create resolver-thread (err=%d)", i); 1014 else 1015 { 1016 cs_log("resolver thread started (delay=%d sec)", cfg->resolvedelay); 1017 pthread_detach(tid); 1018 } 958 while (1) 959 { 960 struct hostent *rht; 961 struct s_auth *account; 962 struct sockaddr_in udp_sa; 963 964 for (account=cfg->account; account; account=account->next) 965 if (account->dyndns[0]) 966 { 967 rht=gethostbyname((const char *)account->dyndns); 968 if (rht) 969 { 970 memcpy(&udp_sa.sin_addr, rht->h_addr, sizeof(udp_sa.sin_addr)); 971 account->dynip=cs_inet_order(udp_sa.sin_addr.s_addr); 972 } 973 else 974 cs_log("can't resolve hostname %s (user: %s)", account->dyndns, account->usr); 975 client[cs_idx].last=time((time_t)0); 976 } 977 sleep(cfg->resolvedelay); 978 } 979 } 980 981 static void loop_resolver() 982 { 983 cs_sleepms(1000); // wait for reader 984 while(1) 985 { 986 cs_resolve(); 987 cs_sleepms(1000*cfg->resolvedelay); 988 } 989 } 990 991 static void start_thread(void * startroutine, char * nameroutine) 992 { 993 int i; 994 pthread_t tid; 995 996 i=pthread_create(&tid, (pthread_attr_t *)0, startroutine, (void *) 0); 997 if (i) 998 cs_log("ERROR: can't create %s thread (err=%d)", i, nameroutine); 999 else 1000 { 1001 cs_log("%s thread started", nameroutine); 1002 pthread_detach(tid); 1003 } 1019 1004 } 1020 1005 … … 2581 2566 2582 2567 if(cfg->clientdyndns) 2583 start_ client_resolver();2568 start_thread((void *) &cs_client_resolve, "client resolver"); 2584 2569 2585 2570 init_service(97); // logger 2586 start_ resolver();2571 start_thread((void *) &loop_resolver, "resolver"); 2587 2572 #ifdef WEBIF 2588 2573 init_service(95); // http
Note:
See TracChangeset
for help on using the changeset viewer.