~ubuntu-branches/debian/experimental/kopete/experimental

« back to all changes in this revision

Viewing changes to protocols/jabber/libiris/src/irisnet/corelib/netnames_jdns.cpp

  • Committer: Package Import Robot
  • Author(s): Maximiliano Curia
  • Date: 2015-02-24 11:32:57 UTC
  • mfrom: (1.1.41 vivid)
  • Revision ID: package-import@ubuntu.com-20150224113257-gnupg4v7lzz18ij0
Tags: 4:14.12.2-1
* New upstream release (14.12.2).
* Bump Standards-Version to 3.9.6, no changes needed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
#include "irisnetplugin.h"
21
21
 
22
22
#include "objectsession.h"
23
 
#include "jdnsshared.h"
 
23
#include "qjdnsshared.h"
24
24
#include "netinterface.h"
25
25
 
26
26
//#define JDNS_DEBUG
237
237
        Q_OBJECT
238
238
 
239
239
public:
240
 
        JDnsSharedDebug db;
241
 
        JDnsShared *uni_net, *uni_local, *mul;
 
240
        QJDnsSharedDebug db;
 
241
        QJDnsShared *uni_net, *uni_local, *mul;
242
242
        QHostAddress mul_addr4, mul_addr6;
243
243
        NetInterfaceManager netman;
244
244
        QList<NetInterface*> ifaces;
272
272
 
273
273
                qDeleteAll(ifaces);
274
274
 
275
 
                QList<JDnsShared*> list;
 
275
                QList<QJDnsShared*> list;
276
276
                if(uni_net)
277
277
                        list += uni_net;
278
278
                if(uni_local)
281
281
                        list += mul;
282
282
 
283
283
                // calls shutdown on the list, waits for shutdownFinished, deletes
284
 
                JDnsShared::waitForShutdown(list);
 
284
                QJDnsShared::waitForShutdown(list);
285
285
 
286
286
                // get final debug
287
287
                jdns_debugReady();
288
288
        }
289
289
 
290
 
        JDnsShared *ensure_uni_net()
 
290
        QJDnsShared *ensure_uni_net()
291
291
        {
292
292
                if(!uni_net)
293
293
                {
294
 
                        uni_net = new JDnsShared(JDnsShared::UnicastInternet, this);
 
294
                        uni_net = new QJDnsShared(QJDnsShared::UnicastInternet, this);
295
295
                        uni_net->setDebug(&db, "U");
296
296
                        bool ok4 = uni_net->addInterface(QHostAddress::Any);
297
297
                        bool ok6 = uni_net->addInterface(QHostAddress::AnyIPv6);
304
304
                return uni_net;
305
305
        }
306
306
 
307
 
        JDnsShared *ensure_uni_local()
 
307
        QJDnsShared *ensure_uni_local()
308
308
        {
309
309
                if(!uni_local)
310
310
                {
311
 
                        uni_local = new JDnsShared(JDnsShared::UnicastLocal, this);
 
311
                        uni_local = new QJDnsShared(QJDnsShared::UnicastLocal, this);
312
312
                        uni_local->setDebug(&db, "L");
313
313
                        bool ok4 = uni_local->addInterface(QHostAddress::Any);
314
314
                        bool ok6 = uni_local->addInterface(QHostAddress::AnyIPv6);
321
321
                return uni_local;
322
322
        }
323
323
 
324
 
        JDnsShared *ensure_mul()
 
324
        QJDnsShared *ensure_mul()
325
325
        {
326
326
                if(!mul)
327
327
                {
328
 
                        mul = new JDnsShared(JDnsShared::Multicast, this);
 
328
                        mul = new QJDnsShared(QJDnsShared::Multicast, this);
329
329
                        mul->setDebug(&db, "M");
330
330
 
331
331
                        connect(&netman, SIGNAL(interfaceAvailable(QString)), SLOT(iface_available(QString)));
453
453
        {
454
454
        public:
455
455
                int id;
456
 
                JDnsSharedRequest *req;
 
456
                QJDnsSharedRequest *req;
457
457
                int type;
458
458
                bool longLived;
459
459
                ObjectSession sess;
517
517
                return 0;
518
518
        }
519
519
 
520
 
        Item *getItemByReq(JDnsSharedRequest *req)
 
520
        Item *getItemByReq(QJDnsSharedRequest *req)
521
521
        {
522
522
                for(int n = 0; n < items.count(); ++n)
523
523
                {
612
612
                        // perform the query
613
613
                        Item *i = new Item(this);
614
614
                        i->id = idman.reserveId();
615
 
                        i->req = new JDnsSharedRequest(global->uni_net);
 
615
                        i->req = new QJDnsSharedRequest(global->uni_net);
616
616
                        connect(i->req, SIGNAL(resultsReady()), SLOT(req_resultsReady()));
617
617
                        i->type = qType;
618
618
                        i->longLived = false;
640
640
                                        return i->id;
641
641
                                }
642
642
 
643
 
                                i->req = new JDnsSharedRequest(global->mul);
 
643
                                i->req = new QJDnsSharedRequest(global->mul);
644
644
                                i->longLived = true;
645
645
                        }
646
646
                        else
647
647
                        {
648
 
                                i->req = new JDnsSharedRequest(global->uni_local);
 
648
                                i->req = new QJDnsSharedRequest(global->uni_local);
649
649
                                i->longLived = false;
650
650
                        }
651
651
                        connect(i->req, SIGNAL(resultsReady()), SLOT(req_resultsReady()));
690
690
private slots:
691
691
        void req_resultsReady()
692
692
        {
693
 
                JDnsSharedRequest *req = (JDnsSharedRequest *)sender();
 
693
                QJDnsSharedRequest *req = (QJDnsSharedRequest *)sender();
694
694
                Item *i = getItemByReq(req);
695
695
                Q_ASSERT(i);
696
696
 
735
735
                }
736
736
                else
737
737
                {
738
 
                        JDnsSharedRequest::Error e = req->error();
 
738
                        QJDnsSharedRequest::Error e = req->error();
739
739
 
740
740
                        error = NameResolver::ErrorGeneric;
741
 
                        if(e == JDnsSharedRequest::ErrorNXDomain)
 
741
                        if(e == QJDnsSharedRequest::ErrorNXDomain)
742
742
                                error = NameResolver::ErrorNoName;
743
 
                        else if(e == JDnsSharedRequest::ErrorTimeout)
 
743
                        else if(e == QJDnsSharedRequest::ErrorTimeout)
744
744
                                error = NameResolver::ErrorTimeout;
745
745
                        else // ErrorGeneric or ErrorNoNet
746
746
                                error = NameResolver::ErrorGeneric;
815
815
 
816
816
public:
817
817
        QByteArray type, typeAndDomain;
818
 
        JDnsSharedRequest req;
 
818
        QJDnsSharedRequest req;
819
819
 
820
 
        JDnsBrowse(JDnsShared *_jdns, QObject *parent = 0) :
 
820
        JDnsBrowse(QJDnsShared *_jdns, QObject *parent = 0) :
821
821
                QObject(parent),
822
822
                req(_jdns, this)
823
823
        {
902
902
                AddressFirstCome  = 2
903
903
        };
904
904
 
905
 
        JDnsSharedRequest reqtxt; // for TXT
906
 
        JDnsSharedRequest req;    // for SRV/A
907
 
        JDnsSharedRequest req6;   // for AAAA
 
905
        QJDnsSharedRequest reqtxt; // for TXT
 
906
        QJDnsSharedRequest req;    // for SRV/A
 
907
        QJDnsSharedRequest req6;   // for AAAA
908
908
        bool haveTxt;
909
909
        SrvState srvState;
910
910
        QTimer *opTimer;
916
916
        bool have4, have6;
917
917
        QHostAddress addr4, addr6;
918
918
 
919
 
        JDnsServiceResolve(JDnsShared *_jdns, QObject *parent = 0) :
 
919
        JDnsServiceResolve(QJDnsShared *_jdns, QObject *parent = 0) :
920
920
                QObject(parent),
921
921
                reqtxt(_jdns, this),
922
922
                req(_jdns, this),
953
953
 
954
954
signals:
955
955
        void finished();
956
 
        void error(JDnsSharedRequest::Error e);
 
956
        void error(QJDnsSharedRequest::Error e);
957
957
 
958
958
private:
959
959
        void cleanup()
1079
1079
                        //   out then we consider the whole job to have
1080
1080
                        //   failed.
1081
1081
                        cleanup();
1082
 
                        emit error(JDnsSharedRequest::ErrorTimeout);
 
1082
                        emit error(QJDnsSharedRequest::ErrorTimeout);
1083
1083
                }
1084
1084
                else if(srvState == AddressWait)
1085
1085
                {
1110
1110
                        if(!tryDone())
1111
1111
                        {
1112
1112
                                cleanup();
1113
 
                                emit error(JDnsSharedRequest::ErrorTimeout);
 
1113
                                emit error(QJDnsSharedRequest::ErrorTimeout);
1114
1114
                        }
1115
1115
                }
1116
1116
        }
1134
1134
 
1135
1135
        Type type;
1136
1136
        QByteArray host;
1137
 
        JDnsSharedRequest pub_addr;
1138
 
        JDnsSharedRequest pub_ptr;
 
1137
        QJDnsSharedRequest pub_addr;
 
1138
        QJDnsSharedRequest pub_ptr;
1139
1139
        bool success_;
1140
1140
 
1141
 
        JDnsPublishAddress(JDnsShared *_jdns, QObject *parent = 0) :
 
1141
        JDnsPublishAddress(QJDnsShared *_jdns, QObject *parent = 0) :
1142
1142
                QObject(parent),
1143
1143
                pub_addr(_jdns, this),
1144
1144
                pub_ptr(_jdns, this)
1245
1245
        bool have6, have4;
1246
1246
        ObjectSession sess;
1247
1247
 
1248
 
        JDnsPublishAddresses(JDnsShared *_jdns, QObject *parent = 0) :
 
1248
        JDnsPublishAddresses(QJDnsShared *_jdns, QObject *parent = 0) :
1249
1249
                QObject(parent),
1250
1250
                started(false),
1251
1251
                use6(false),
1481
1481
 
1482
1482
signals:
1483
1483
        void published();
1484
 
        void error(JDnsSharedRequest::Error e);
 
1484
        void error(QJDnsSharedRequest::Error e);
1485
1485
 
1486
1486
private:
1487
1487
        friend class JDnsPublish;
1488
1488
 
1489
1489
        JDnsPublish *jdnsPub;
1490
1490
        bool started;
1491
 
        JDnsSharedRequest pub;
 
1491
        QJDnsSharedRequest pub;
1492
1492
        QJDns::Record rec;
1493
1493
        bool have;
1494
1494
        bool need_update;
1512
1512
        Q_OBJECT
1513
1513
 
1514
1514
public:
1515
 
        JDnsShared *jdns;
1516
 
        JDnsSharedRequest pub_srv;
1517
 
        JDnsSharedRequest pub_txt;
1518
 
        JDnsSharedRequest pub_ptr;
 
1515
        QJDnsShared *jdns;
 
1516
        QJDnsSharedRequest pub_srv;
 
1517
        QJDnsSharedRequest pub_txt;
 
1518
        QJDnsSharedRequest pub_ptr;
1519
1519
 
1520
1520
        bool have_srv, have_txt, have_ptr;
1521
1521
        bool need_update_txt;
1529
1529
 
1530
1530
        QSet<JDnsPublishExtra*> extraList;
1531
1531
 
1532
 
        JDnsPublish(JDnsShared *_jdns, QObject *parent = 0) :
 
1532
        JDnsPublish(QJDnsShared *_jdns, QObject *parent = 0) :
1533
1533
                QObject(parent),
1534
1534
                jdns(_jdns),
1535
1535
                pub_srv(_jdns, this),
1622
1622
 
1623
1623
signals:
1624
1624
        void published();
1625
 
        void error(JDnsSharedRequest::Error e);
 
1625
        void error(QJDnsSharedRequest::Error e);
1626
1626
 
1627
1627
private:
1628
1628
        friend class JDnsPublishExtra;
1779
1779
                }
1780
1780
                else
1781
1781
                {
1782
 
                        JDnsSharedRequest::Error e = pub_srv.error();
 
1782
                        QJDnsSharedRequest::Error e = pub_srv.error();
1783
1783
                        cleanup();
1784
1784
                        emit error(e);
1785
1785
                }
1801
1801
                }
1802
1802
                else
1803
1803
                {
1804
 
                        JDnsSharedRequest::Error e = pub_txt.error();
 
1804
                        QJDnsSharedRequest::Error e = pub_txt.error();
1805
1805
                        cleanup();
1806
1806
                        emit error(e);
1807
1807
                }
1816
1816
                }
1817
1817
                else
1818
1818
                {
1819
 
                        JDnsSharedRequest::Error e = pub_ptr.error();
 
1819
                        QJDnsSharedRequest::Error e = pub_ptr.error();
1820
1820
                        cleanup();
1821
1821
                        emit error(e);
1822
1822
                }
1824
1824
 
1825
1825
        void pub_extra_ready()
1826
1826
        {
1827
 
                JDnsSharedRequest *req = (JDnsSharedRequest *)sender();
 
1827
                QJDnsSharedRequest *req = (QJDnsSharedRequest *)sender();
1828
1828
                JDnsPublishExtra *extra = 0;
1829
1829
                foreach(JDnsPublishExtra *e, extraList)
1830
1830
                {
1850
1850
                }
1851
1851
                else
1852
1852
                {
1853
 
                        JDnsSharedRequest::Error e = extra->pub.error();
 
1853
                        QJDnsSharedRequest::Error e = extra->pub.error();
1854
1854
                        cleanupExtra(extra);
1855
1855
                        emit extra->error(e);
1856
1856
                }
2292
2292
 
2293
2293
                ResolveItem *i = new ResolveItem(id, new JDnsServiceResolve(global->mul, this));
2294
2294
                connect(i->resolve, SIGNAL(finished()), SLOT(jr_finished()));
2295
 
                connect(i->resolve, SIGNAL(error(JDnsSharedRequest::Error)), SLOT(jr_error(JDnsSharedRequest::Error)));
 
2295
                connect(i->resolve, SIGNAL(error(QJDnsSharedRequest::Error)), SLOT(jr_error(QJDnsSharedRequest::Error)));
2296
2296
                resolveItemList.insert(i);
2297
2297
                i->resolve->start(name);
2298
2298
                return i->id;
2346
2346
                //   defer the operation until a host is acquired.
2347
2347
                PublishItem *i = new PublishItem(id, new JDnsPublish(global->mul, this));
2348
2348
                connect(i->publish, SIGNAL(published()), SLOT(jp_published()));
2349
 
                connect(i->publish, SIGNAL(error(JDnsSharedRequest::Error)), SLOT(jp_error(JDnsSharedRequest::Error)));
 
2349
                connect(i->publish, SIGNAL(error(QJDnsSharedRequest::Error)), SLOT(jp_error(QJDnsSharedRequest::Error)));
2350
2350
                publishItemList.insert(i);
2351
2351
                i->publish->start(instance, type, localHost, port, attributes);
2352
2352
                return i->id;
2401
2401
 
2402
2402
                PublishExtraItem *i = new PublishExtraItem(id, new JDnsPublishExtra(pi->publish));
2403
2403
                connect(i->publish, SIGNAL(published()), SLOT(jpe_published()));
2404
 
                connect(i->publish, SIGNAL(error(JDnsSharedRequest::Error)), SLOT(jpe_error(JDnsSharedRequest::Error)));
 
2404
                connect(i->publish, SIGNAL(error(QJDnsSharedRequest::Error)), SLOT(jpe_error(QJDnsSharedRequest::Error)));
2405
2405
                publishExtraItemList.insert(i);
2406
2406
                i->publish->start(rec);
2407
2407
                return i->id;
2562
2562
                emit resolve_resultsReady(id, results);
2563
2563
        }
2564
2564
 
2565
 
        void jr_error(JDnsSharedRequest::Error e)
 
2565
        void jr_error(QJDnsSharedRequest::Error e)
2566
2566
        {
2567
2567
                JDnsServiceResolve *jr = (JDnsServiceResolve *)sender();
2568
2568
                ResolveItem *i = resolveItemList.itemByResolve(jr);
2569
2569
                Q_ASSERT(i);
2570
2570
 
2571
2571
                ServiceResolver::Error err;
2572
 
                if(e == JDnsSharedRequest::ErrorTimeout)
 
2572
                if(e == QJDnsSharedRequest::ErrorTimeout)
2573
2573
                        err = ServiceResolver::ErrorTimeout;
2574
2574
                else
2575
2575
                        err = ServiceResolver::ErrorGeneric;
2604
2604
                emit publish_published(i->id);
2605
2605
        }
2606
2606
 
2607
 
        void jp_error(JDnsSharedRequest::Error e)
 
2607
        void jp_error(QJDnsSharedRequest::Error e)
2608
2608
        {
2609
2609
                JDnsPublish *jp = (JDnsPublish *)sender();
2610
2610
                PublishItem *i = publishItemList.itemByPublish(jp);
2611
2611
                Q_ASSERT(i);
2612
2612
 
2613
2613
                ServiceLocalPublisher::Error err;
2614
 
                if(e == JDnsSharedRequest::ErrorConflict)
 
2614
                if(e == QJDnsSharedRequest::ErrorConflict)
2615
2615
                        err = ServiceLocalPublisher::ErrorConflict;
2616
2616
                else
2617
2617
                        err = ServiceLocalPublisher::ErrorGeneric;
2641
2641
                emit publish_extra_published(i->id);
2642
2642
        }
2643
2643
 
2644
 
        void jpe_error(JDnsSharedRequest::Error e)
 
2644
        void jpe_error(QJDnsSharedRequest::Error e)
2645
2645
        {
2646
2646
                JDnsPublishExtra *jp = (JDnsPublishExtra *)sender();
2647
2647
                PublishExtraItem *i = publishExtraItemList.itemByPublish(jp);
2648
2648
                Q_ASSERT(i);
2649
2649
 
2650
2650
                ServiceLocalPublisher::Error err;
2651
 
                if(e == JDnsSharedRequest::ErrorConflict)
 
2651
                if(e == QJDnsSharedRequest::ErrorConflict)
2652
2652
                        err = ServiceLocalPublisher::ErrorConflict;
2653
2653
                else
2654
2654
                        err = ServiceLocalPublisher::ErrorGeneric;