~ubuntu-branches/ubuntu/utopic/sipwitch/utopic

« back to all changes in this revision

Viewing changes to server/registry.cpp

  • Committer: Package Import Robot
  • Author(s): Jonas Smedegaard
  • Date: 2012-06-25 16:55:59 UTC
  • Revision ID: package-import@ubuntu.com-20120625165559-3g3z1w6qxysi9t08
* New upstream release.

* Update upstream source URL.
* Extend copyright coverage of packaging.
* Add Vcs-* URLs to control file.
* Unfuzz patch 1001.

Show diffs side-by-side

added added

removed removed

Lines of Context:
211
211
 
212
212
unsigned registry::getIndex(mapped *rr)
213
213
{
214
 
    assert((caddr_t)rr >= reg.addr());
 
214
    assert((caddr_t)rr >= reg.getStart());
215
215
 
216
 
    unsigned x = (unsigned)(((caddr_t)rr - reg.addr()) / sizeof(MappedRegistry));
 
216
    unsigned x = (unsigned)(((caddr_t)rr - reg.getStart()) / sizeof(MappedRegistry));
217
217
    return x;
218
218
}
219
219
 
299
299
                fputc('\n', fp);
300
300
            tp = rr->source.internal.targets;
301
301
            while(is(tp)) {
302
 
                Socket::query((struct sockaddr *)(&tp->address), buffer, sizeof(buffer));
 
302
                Socket::getaddress((struct sockaddr *)(&tp->address), buffer, sizeof(buffer));
303
303
                fprintf(fp, "    address=%s, contact=%s", buffer, tp->contact);
304
304
                if(tp->expires && tp->expires <= now)
305
305
                    fprintf(fp, ", expired");
374
374
    if(rr && rr->inuse)
375
375
        rtn = false;
376
376
    else if(rr) {
377
 
        store_unsafe<mapped>(save, rr);
 
377
        memcpy(&save, rr, sizeof(save));
378
378
        expire(rr);
379
379
    }
380
380
    else
460
460
        expired = false;
461
461
        time(&now);
462
462
        rr = static_cast<mapped*>(reg(regcount++));
463
 
        store_unsafe<mapped>(save, rr);
 
463
        memcpy(&save, rr, sizeof(save));
464
464
        locking.modify();
465
465
        if(rr->type != MappedRegistry::EXPIRED && rr->expires && rr->expires + period < now && !rr->inuse) {
466
466
            expire(rr);
494
494
        key = sp->getId();
495
495
        value = sp->getPointer();
496
496
        if(key && value) {
497
 
            if(!stricmp(key, "mapped") && !is_configured())
 
497
            if(!stricmp(key, "mapped") && !isConfigured())
498
498
                mapped_entries = atoi(value);
499
499
            else if(!stricmp(key, "digest")) {
500
500
                digest = cfg->dup(value);
502
502
            }
503
503
            else if(!stricmp(key, "realm"))
504
504
                realm = cfg->dup(value);
505
 
            else if(!stricmp(key, "prefix") && !is_configured())
 
505
            else if(!stricmp(key, "prefix") && !isConfigured())
506
506
                prefix = atoi(value);
507
 
            else if(!stricmp(key, "range") && !is_configured())
 
507
            else if(!stricmp(key, "range") && !isConfigured())
508
508
                range = atoi(value);
509
 
            else if(!stricmp(key, "priorities") && !is_configured())
 
509
            else if(!stricmp(key, "priorities") && !isConfigured())
510
510
                routes = atoi(value);
511
511
            else if(!stricmp(key, "expires"))
512
512
                expires = atoi(value);
513
 
            else if(!stricmp(key, "keysize") && !is_configured())
 
513
            else if(!stricmp(key, "keysize") && !isConfigured())
514
514
                keysize = atoi(value);
515
515
        }
516
516
        sp.next();
523
523
    char *cp;
524
524
 
525
525
    if(!getuid() || !realm)
526
 
        fs.open(DEFAULT_CFGPATH "/siprealm", fsys::RDONLY);
 
526
        fsys::open(fs, DEFAULT_CFGPATH "/siprealm", fsys::ACCESS_RDONLY);
527
527
    if(!is(fs) && !realm)
528
 
        fs.open("uuid", fsys::RDONLY);
 
528
        fsys::open(fs, "uuid", fsys::ACCESS_RDONLY);
529
529
    if(is(fs)) {
530
530
        memset(buffer, 0, sizeof(buffer));
531
 
        fs.read(buffer, sizeof(buffer) - 1);
532
 
        fs.close();
 
531
        fsys::read(fs, buffer, sizeof(buffer) - 1);
 
532
        fsys::close(fs);
533
533
 
534
534
        cp = strchr(buffer, '\n');
535
535
        if(cp)
551
551
        Random::uuid(buffer);
552
552
        String::add(buffer, sizeof(buffer), ":");
553
553
        String::add(buffer, sizeof(buffer), digest);
554
 
        fs.open("uuid", 0440, fsys::WRONLY);
 
554
        fsys::create(fs, "uuid", fsys::ACCESS_WRONLY, 0444);
555
555
        if(is(fs)) {
556
 
            fs.write(buffer, sizeof(buffer));
557
 
            fs.close();
 
556
            fsys::write(fs, buffer, sizeof(buffer));
 
557
            fsys::close(fs);
558
558
        }
559
559
        cp = strchr(buffer, ':');
560
560
        if(cp)
581
581
    sip_range = range;
582
582
    events::realm(realm);
583
583
 
584
 
    if(is_configured())
 
584
    if(isConfigured())
585
585
        return;
586
586
 
587
587
    if(range) {
821
821
    if(leaf && leaf->getPointer())
822
822
        ext = atoi(leaf->getPointer());
823
823
 
824
 
    if(rr->is_profiled()) {
 
824
    if(rr->isProfiled()) {
825
825
        pro = NULL;
826
826
        leaf = node->leaf("profile");
827
827
        if(leaf)
1122
1122
    if(!ai)
1123
1123
        return 0;
1124
1124
 
1125
 
    len = Socket::len(ai);
 
1125
    len = Socket::getlen(ai);
1126
1126
 
1127
1127
    locking.exclusive();
1128
1128
    tp = source.internal.targets;
1309
1309
    if(!active_count) {
1310
1310
        registry::mapped save;
1311
1311
        Mutex::protect(this);
1312
 
        store_unsafe<registry::mapped>(save, this);
 
1312
        memcpy(&save, this, sizeof(save));
1313
1313
        type = MappedRegistry::EXPIRED;
1314
1314
        expires = 0;
1315
1315
        Mutex::release(this);
1327
1327
 
1328
1328
    time(&now);
1329
1329
 
1330
 
    if(changed == registry::target::UNKNOWN || !saddr.getAddr() || !expires || expires < now || !is_user())
 
1330
    if(changed == registry::target::UNKNOWN || !saddr.getAddr() || !expires || expires < now || !isUser())
1331
1331
        return;
1332
1332
 
1333
1333
    tp = source.internal.targets;
1399
1399
    if(lease > expires)
1400
1400
        expires = lease;
1401
1401
 
1402
 
    len = Socket::len(ai);
 
1402
    len = Socket::getlen(ai);
1403
1403
    time(&now);
1404
1404
    while(tp) {
1405
1405
        if(tp->expires < now)
1486
1486
    source.internal.targets = NULL;
1487
1487
    count = 0;
1488
1488
    while(al) {
1489
 
        len = Socket::len(al->ai_addr);
 
1489
        len = Socket::getlen(al->ai_addr);
1490
1490
 
1491
1491
        tp = new target;
1492
1492
        time(&tp->created);