***/
#include <string.h>
-#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <netinet/in.h>
-#include <arpa/nameser.h>
#include <resolv.h>
-#include <assert.h>
-#include <signal.h>
#include <errno.h>
#include "socket-util.h"
static int getaddrinfo_handler(sd_resolve_query *q, int ret, const struct addrinfo *ai, void *userdata) {
const struct addrinfo *i;
- assert(q);
+ assert_se(q);
if (ret != 0) {
- log_error("getaddrinfo error: %s %i\n", gai_strerror(ret), ret);
+ log_error("getaddrinfo error: %s %i", gai_strerror(ret), ret);
return 0;
}
}
static int getnameinfo_handler(sd_resolve_query *q, int ret, const char *host, const char *serv, void *userdata) {
- assert(q);
+ assert_se(q);
if (ret != 0) {
- log_error("getnameinfo error: %s %i\n", gai_strerror(ret), ret);
+ log_error("getnameinfo error: %s %i", gai_strerror(ret), ret);
return 0;
}
unsigned char *end = answer + ret;
HEADER *head = (HEADER *) answer;
char name[256];
- assert(q);
+ assert_se(q);
if (ret < 0) {
- log_error("res_query() error: %s %i\n", strerror(errno), errno);
+ log_error("res_query() error: %s %i", strerror(errno), errno);
return 0;
}
if (ret == 0) {
- log_error("No reply for SRV lookup\n");
+ log_error("No reply for SRV lookup");
return 0;
}
/* Ignore the questions */
while (qdcount-- > 0 && (len = dn_expand(answer, end, pos, name, 255)) >= 0) {
- assert(len >= 0);
+ assert_se(len >= 0);
pos += len + QFIXEDSZ;
}
while (ancount-- > 0 && (len = dn_expand(answer, end, pos, name, 255)) >= 0) {
/* Ignore the initial string */
uint16_t pref, weight, port;
- assert(len >= 0);
+ assert_se(len >= 0);
pos += len;
/* Ignore type, ttl, class and dlen */
pos += 10;
/* Make a name -> address query */
r = sd_resolve_getaddrinfo(resolve, &q1, argc >= 2 ? argv[1] : "www.heise.de", NULL, &hints, getaddrinfo_handler, NULL);
if (r < 0)
- log_error("sd_resolve_getaddrinfo(): %s\n", strerror(-r));
+ log_error_errno(r, "sd_resolve_getaddrinfo(): %m");
/* Make an address -> name query */
sa.sin_addr.s_addr = inet_addr(argc >= 3 ? argv[2] : "193.99.144.71");
r = sd_resolve_getnameinfo(resolve, &q2, (struct sockaddr*) &sa, sizeof(sa), 0, SD_RESOLVE_GET_BOTH, getnameinfo_handler, NULL);
if (r < 0)
- log_error("sd_resolve_getnameinfo(): %s\n", strerror(-r));
+ log_error_errno(r, "sd_resolve_getnameinfo(): %m");
/* Make a res_query() call */
r = sd_resolve_res_query(resolve, &q3, "_xmpp-client._tcp.gmail.com", C_IN, T_SRV, res_handler, NULL);
if (r < 0)
- log_error("sd_resolve_res_query(): %s\n", strerror(-r));
+ log_error_errno(r, "sd_resolve_res_query(): %m");
/* Wait until the three queries are completed */
while (sd_resolve_query_is_done(q1) == 0 ||
r = sd_resolve_wait(resolve, (uint64_t) -1);
if (r < 0) {
- log_error("sd_resolve_wait(): %s\n", strerror(-r));
+ log_error_errno(r, "sd_resolve_wait(): %m");
assert_not_reached("sd_resolve_wait() failed");
}
}