[xmppd-dev] commit r1539 - in trunk/jabberd14: . jabberd/lib resolver
mail at jabberd.org
mail at jabberd.org
Wed Sep 10 02:35:57 CEST 2008
Author: mawis
Date: Wed Sep 10 02:35:57 2008
New Revision: 1539
Log:
Continued work on new resolver
Modified:
trunk/jabberd14/ChangeLog
trunk/jabberd14/jabberd/lib/lwresc.cc
trunk/jabberd14/resolver/resolver.cc
trunk/jabberd14/resolver/resolver.h
Modified: trunk/jabberd14/ChangeLog
==============================================================================
--- trunk/jabberd14/ChangeLog Wed Sep 10 02:00:15 2008 (r1538)
+++ trunk/jabberd14/ChangeLog Wed Sep 10 02:35:57 2008 (r1539)
@@ -7,6 +7,7 @@
* jabberd/lib/jabberdlib.h: same
* jabberd/lib/socket.cc: same
* jabberd/mio_xml.cc: sanity change
+ * jabberd/lib/lwresc.cc: fix in reading uint16_t
2008-09-08 Matthias Wimmer <m at tthias.eu>
Modified: trunk/jabberd14/jabberd/lib/lwresc.cc
==============================================================================
--- trunk/jabberd14/jabberd/lib/lwresc.cc Wed Sep 10 02:00:15 2008 (r1538)
+++ trunk/jabberd14/jabberd/lib/lwresc.cc Wed Sep 10 02:35:57 2008 (r1539)
@@ -109,7 +109,7 @@
throw std::runtime_error("No data available to be read from the stream");
}
- return first_char*0x100 + second_char;
+ return static_cast<unsigned char>(first_char)*0x100 + static_cast<unsigned char>(second_char);
}
uint32_t lwresult::read_uint32(std::istream& is) {
Modified: trunk/jabberd14/resolver/resolver.cc
==============================================================================
--- trunk/jabberd14/resolver/resolver.cc Wed Sep 10 02:00:15 2008 (r1538)
+++ trunk/jabberd14/resolver/resolver.cc Wed Sep 10 02:35:57 2008 (r1539)
@@ -40,11 +40,8 @@
}
void resolver::open_lwresd_socket() {
- log_debug2(ZONE, LOGT_IO, "opening socket: service=%s, host=%s", lwresd_service.c_str(), lwresd_host.c_str());
int udp_socket = make_netsocket2(lwresd_service, lwresd_host, NETSOCKET_UDP);
- log_debug2(ZONE, LOGT_IO, "netsocket is on fd %i", udp_socket);
-
lwresd_socket = mio_new(udp_socket, mio_callback, this, MIO_CONNECT_RAW);
}
@@ -138,7 +135,6 @@
query_bin << query;
// send it
- log_debug2(ZONE, LOGT_IO, "sending %i bytes", query_bin.str().length());
mio_write(lwresd_socket, NULL, query_bin.str().c_str(), query_bin.str().length());
}
@@ -250,7 +246,7 @@
return r_DONE;
}
- resolver_job::resolver_job(resolver& owner, dpacket dp) : owner(owner) {
+ resolver_job::resolver_job(resolver& owner, dpacket dp) : owner(owner), waited_srv_serial(0) {
// sanity check
if (!dp->host) {
throw std::invalid_argument("dpacket has no host");
@@ -298,12 +294,11 @@
xmppd::lwresc::rrsetbyname query(name_to_resolve.str(), ns_c_in, ns_t_srv);
// register result callback
+ waited_srv_serial = query.getSerial();
connected_signals.push_back(owner.register_result_callback(query.getSerial(), sigc::mem_fun(*this, &xmppd::resolver::resolver_job::on_srv_query_result)));
// send query
owner.send_query(query);
-
- // XXX implementation needed
} else {
// no SRV lookup, just plain AAAA+A
@@ -321,6 +316,19 @@
}
void resolver_job::on_srv_query_result(xmppd::lwresc::lwresult const& result) {
+ // ignore all results we are not waiting for
+ if (result.getSerial() != waited_srv_serial)
+ return;
+
+ // did we successfully get a result?
+ if (result.getResult() != xmppd::lwresc::lwresult::res_success) {
+ // try next service
+ ++current_service;
+ start_resolving_service();
+ return;
+ }
+
+ // XXX implement this method
}
}
}
Modified: trunk/jabberd14/resolver/resolver.h
==============================================================================
--- trunk/jabberd14/resolver/resolver.h Wed Sep 10 02:00:15 2008 (r1538)
+++ trunk/jabberd14/resolver/resolver.h Wed Sep 10 02:35:57 2008 (r1539)
@@ -167,6 +167,11 @@
* handle results of SRV queries to the DNS
*/
void on_srv_query_result(xmppd::lwresc::lwresult const& result);
+
+ /**
+ * the serial for the SRV query that we have sent last
+ */
+ uint32_t waited_srv_serial;
};
/**
More information about the dev
mailing list