chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
resolved: fix typo in sd_notify() call
[elogind.git]
/
src
/
resolve
/
resolved-dns-packet.c
diff --git
a/src/resolve/resolved-dns-packet.c
b/src/resolve/resolved-dns-packet.c
index 4f9503803be53b66c02b06cbeb151cf779554663..e5d07b3b1ff06666e4be428fd4f78ac31ec62b48 100644
(file)
--- a/
src/resolve/resolved-dns-packet.c
+++ b/
src/resolve/resolved-dns-packet.c
@@
-22,6
+22,7
@@
#include "utf8.h"
#include "util.h"
#include "strv.h"
#include "utf8.h"
#include "util.h"
#include "strv.h"
+#include "unaligned.h"
#include "resolved-dns-domain.h"
#include "resolved-dns-packet.h"
#include "resolved-dns-domain.h"
#include "resolved-dns-packet.h"
@@
-311,8
+312,7
@@
int dns_packet_append_uint16(DnsPacket *p, uint16_t v, size_t *start) {
if (r < 0)
return r;
if (r < 0)
return r;
- ((uint8_t*) d)[0] = (uint8_t) (v >> 8);
- ((uint8_t*) d)[1] = (uint8_t) v;
+ unaligned_write_be16(d, v);
return 0;
}
return 0;
}
@@
-327,10
+327,7
@@
int dns_packet_append_uint32(DnsPacket *p, uint32_t v, size_t *start) {
if (r < 0)
return r;
if (r < 0)
return r;
- ((uint8_t*) d)[0] = (uint8_t) (v >> 24);
- ((uint8_t*) d)[1] = (uint8_t) (v >> 16);
- ((uint8_t*) d)[2] = (uint8_t) (v >> 8);
- ((uint8_t*) d)[3] = (uint8_t) v;
+ unaligned_write_be32(d, v);
return 0;
}
return 0;
}
@@
-433,9
+430,7
@@
int dns_packet_append_name(DnsPacket *p, const char *name,
goto fail;
if (allow_compression) {
goto fail;
if (allow_compression) {
- r = hashmap_ensure_allocated(&p->names,
- dns_name_hash_func,
- dns_name_compare_func);
+ r = hashmap_ensure_allocated(&p->names, &dns_name_hash_ops);
if (r < 0)
goto fail;
if (r < 0)
goto fail;
@@
-795,8
+790,8
@@
int dns_packet_read_uint16(DnsPacket *p, uint16_t *ret, size_t *start) {
if (r < 0)
return r;
if (r < 0)
return r;
- *ret =
(((uint16_t) ((uint8_t*) d)[0]) << 8) |
- ((uint16_t) ((uint8_t*) d)[1]);
+ *ret =
unaligned_read_be16(d);
+
return 0;
}
return 0;
}
@@
-810,10
+805,7
@@
int dns_packet_read_uint32(DnsPacket *p, uint32_t *ret, size_t *start) {
if (r < 0)
return r;
if (r < 0)
return r;
- *ret = (((uint32_t) ((uint8_t*) d)[0]) << 24) |
- (((uint32_t) ((uint8_t*) d)[1]) << 16) |
- (((uint32_t) ((uint8_t*) d)[2]) << 8) |
- ((uint32_t) ((uint8_t*) d)[3]);
+ *ret = unaligned_read_be32(d);
return 0;
}
return 0;
}
@@
-1358,6
+1350,9
@@
int dns_packet_extract(DnsPacket *p) {
unsigned n, i;
int r;
unsigned n, i;
int r;
+ if (p->extracted)
+ return 0;
+
saved_rindex = p->rindex;
dns_packet_rewind(p, DNS_PACKET_HEADER_SIZE);
saved_rindex = p->rindex;
dns_packet_rewind(p, DNS_PACKET_HEADER_SIZE);
@@
-1409,6
+1404,8
@@
int dns_packet_extract(DnsPacket *p) {
p->answer = answer;
answer = NULL;
p->answer = answer;
answer = NULL;
+ p->extracted = true;
+
r = 0;
finish:
r = 0;
finish: