~ubuntu-branches/ubuntu/wily/trafficserver/wily

« back to all changes in this revision

Viewing changes to proxy/congest/CongestionDB.cc

  • Committer: Package Import Robot
  • Author(s): Adam Conrad
  • Date: 2012-12-17 22:28:16 UTC
  • mfrom: (5.1.8 raring-proposed)
  • Revision ID: package-import@ubuntu.com-20121217222816-7xwjsx5k76zkb63d
Tags: 3.2.0-1ubuntu1
* Revert FreeBSD strerror_r() fixes that give errors with glibc 2.16.
* Apply patch from Konstantinos Margaritis to define barriers on ARM.

Show diffs side-by-side

added added

removed removed

Lines of Context:
75
75
    {
76
76
      uint64_t m_key;
77
77
      char *m_hostname;
78
 
      ip_addr_t m_ip;
 
78
      IpEndpoint m_ip;
79
79
      CongestionControlRecord *m_rule;
80
80
      CongestionEntry **m_ppEntry;
81
81
    } entry_info;
402
402
  NOWARN_UNUSED(e);
403
403
 
404
404
  if (m_action.cancelled) {
405
 
    Debug("congestion_cont", "action cancelled for 0x%x", this);
 
405
    Debug("congestion_cont", "action cancelled for %p", this);
406
406
    Free_CongestionDBCont(this);
407
 
    Debug("congestion_control", "cont::get_congest_entry state machine cancelld");
 
407
    Debug("congestion_control", "cont::get_congest_entry state machine canceled");
408
408
    return EVENT_DONE;
409
409
  }
410
410
  ProxyMutex *bucket_mutex = theCongestionDB->lock_for_key(CDBC_key);
419
419
      m_action.continuation->handleEvent(CONGESTION_EVENT_CONTROL_LOOKUP_DONE, NULL);
420
420
    } else {
421
421
      /* create a new entry and add it to the congestDB */
422
 
      *CDBC_ppE = new CongestionEntry(CDBC_host, CDBC_ip, CDBC_rule, CDBC_key);
 
422
      *CDBC_ppE = new CongestionEntry(CDBC_host, &CDBC_ip.sa, CDBC_rule, CDBC_key);
423
423
      CDBC_rule->put();
424
424
      (*CDBC_ppE)->get();
425
425
      theCongestionDB->insert_entry(CDBC_key, *CDBC_ppE);
498
498
    *ppEntry = theCongestionDB->lookup_entry(key);
499
499
    if (*ppEntry != NULL) {
500
500
      (*ppEntry)->get();
501
 
      Debug("congestion_control", "get_congest_entry, found entry 0x%x done", (void *) *ppEntry);
 
501
      Debug("congestion_control", "get_congest_entry, found entry %p done", (void *) *ppEntry);
502
502
      return ACTION_RESULT_DONE;
503
503
    } else {
504
504
      // create a new entry and add it to the congestDB
505
505
      *ppEntry = new CongestionEntry(data->get_host(), data->get_ip(), p, key);
506
506
      (*ppEntry)->get();
507
507
      theCongestionDB->insert_entry(key, *ppEntry);
508
 
      Debug("congestion_control", "get_congest_entry, new entry 0x%x done", (void *) *ppEntry);
 
508
      Debug("congestion_control", "get_congest_entry, new entry %p done", (void *) *ppEntry);
509
509
      return ACTION_RESULT_DONE;
510
510
    }
511
511
  } else {
515
515
    Ccont->mutex = cont->mutex;
516
516
    Ccont->CDBC_key = key;
517
517
    Ccont->CDBC_host = (char *) data->get_host();
518
 
    Ccont->CDBC_ip = data->get_ip();
 
518
    ats_ip_copy(&Ccont->CDBC_ip.sa, data->get_ip());
519
519
    p->get();
520
520
    Ccont->CDBC_rule = p;
521
521
    Ccont->CDBC_ppE = ppEntry;
623
623
    remove_congested_entry(key);
624
624
    len = snprintf(msg, MSG_LEN, "host=%s prefix=%s removed\n", p, prefix ? prefix : "(nil)");
625
625
  } else if (strncasecmp(buf, "ip=", 3) == 0) {
 
626
    IpEndpoint ip;
 
627
    memset(&ip, 0, sizeof(ip));
 
628
    
626
629
    char *p = buf + 3;
627
 
    ip_addr_t ip = 0;
628
630
    char *prefix = strchr(p, '/');
629
631
    int prelen = 0;
630
632
    if (prefix) {
632
634
      prefix++;
633
635
      prelen = strlen(prefix);
634
636
    }
635
 
    ip = htonl(inet_addr(p));
636
 
    if (ip == (ip_addr_t) - 1 && strcmp(p, "255.255.255.255") != 0) {
 
637
    ats_ip_pton(p, &ip);
 
638
    if (!ats_is_ip(&ip)) {
637
639
      len = snprintf(msg, MSG_LEN, "invalid ip: %s\n", buf);
638
640
    } else {
639
 
      key = make_key(NULL, 0, ip, prefix, prelen);
 
641
      key = make_key(NULL, 0, &ip.sa, prefix, prelen);
640
642
      remove_congested_entry(key);
641
643
      len = snprintf(msg, MSG_LEN, "ip=%s prefix=%s removed\n", p, prefix ? prefix : "(nil)");
642
644
    }