/[radius]/radius/radiusd/request.c
ViewVC logotype

Diff of /radius/radiusd/request.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.28 by gray, Sun Apr 27 17:08:26 2003 UTC revision 1.29 by gray, Wed Apr 30 20:12:25 2003 UTC
# Line 160  _request_iterator(void *item, void *clos Line 160  _request_iterator(void *item, void *clos
160                               <= rp->curtime) {                               <= rp->curtime) {
161                          debug(1, ("deleting completed %s request",                          debug(1, ("deleting completed %s request",
162                                    request_class[req->type].name));                                    request_class[req->type].name));
163                          list_remove_current(request_list);                          list_remove(request_list, req, NULL);
164                          request_free(req);                          request_free(req);
165                          return 0;                          return 0;
166                  }                  }
# Line 170  _request_iterator(void *item, void *clos Line 170  _request_iterator(void *item, void *clos
170                                    request_class[req->type].name,                                    request_class[req->type].name,
171                                    (u_long) req->child_id));                                    (u_long) req->child_id));
172                          (*rp->handler)(req);                          (*rp->handler)(req);
173                          list_remove_current(request_list);                          list_remove(request_list, req, NULL);
174                          request_free(req);                          request_free(req);
175                  } else if (req->timestamp + request_class[req->type].ttl                  } else if (req->timestamp + request_class[req->type].ttl
176                             <= rp->curtime) {                             <= rp->curtime) {
177                          radlog(L_NOTICE,                          radlog(L_NOTICE,
178                                 _("Proxy %s request expired in queue"),                                 _("Proxy %s request expired in queue"),
179                                 request_class[req->type].name);                                 request_class[req->type].name);
180                          list_remove_current(request_list);                          list_remove(request_list, req, NULL);
181                          request_free(req);                          request_free(req);
182                  }                  }
183          } else if (req->timestamp + request_class[req->type].ttl          } else if (req->timestamp + request_class[req->type].ttl
# Line 314  void Line 314  void
314  request_update(pid_t pid, int status, void *ptr)  request_update(pid_t pid, int status, void *ptr)
315  {  {
316          REQUEST *p;          REQUEST *p;
317            ITERATOR *itr;
318            
319          debug(100,("enter"));          debug(100,("enter"));
320          for (p = list_first(request_list); p; p = list_next(request_list))          itr = iterator_create(request_list);
321            if (!itr)
322                    return;
323            for (p = iterator_first(itr); p; p = iterator_next(itr))
324                  if (p->child_id == pid) {                  if (p->child_id == pid) {
325                          p->status = status;                          p->status = status;
326                          if (ptr && request_class[p->type].update)                          if (ptr && request_class[p->type].update)
327                                  request_class[p->type].update(p->data, ptr);                                  request_class[p->type].update(p->data, ptr);
328                          break;                          break;
329                  }                  }
330            iterator_destroy(&itr);
331          debug(100,("exit"));          debug(100,("exit"));
332  }  }
333                                                    
# Line 348  request_init_queue() Line 353  request_init_queue()
353  }  }
354    
355  void *  void *
356  request_scan_list(int type, list_iterator_t itr, void *closure)  request_scan_list(int type, list_iterator_t fn, void *closure)
357  {  {
358          REQUEST *p;          REQUEST *p;
359            ITERATOR *itr;
360    
361          for (p = list_first(request_list); p; p = list_next(request_list)) {          itr = iterator_create(request_list);
362                  if (p->type == type          if (!itr)
363                      && itr(p->data, closure) == 0)                  return NULL;
364                          return p->data;          for (p = iterator_first(itr); p; p = iterator_next(itr)) {
365          }                  if (p->type == type && fn(p->data, closure) == 0)
366          return NULL;                          break;
367            }
368            iterator_destroy(&itr);
369            return p ? p->data : NULL;
370  }  }
371    
372  static int  static int

Legend:
Removed from v.1.28  
changed lines
  Added in v.1.29

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26