diff --git a/src/encoding.c b/src/encoding.c index 11ca96f..127e871 100644 --- a/src/encoding.c +++ b/src/encoding.c @@ -17,6 +17,15 @@ #include #include "encoding.h" + +int +unpack_data(char *buf, size_t buflen, char *data, size_t datalen, struct encoder *enc) +{ + if (!enc->eats_dots()) + datalen = inline_undotify(data, datalen); + return enc->decode(buf, &buflen, data, datalen); +} + int inline_dotify(char *buf, size_t buflen) { diff --git a/src/encoding.h b/src/encoding.h index 6f7418e..4473b2f 100644 --- a/src/encoding.h +++ b/src/encoding.h @@ -17,9 +17,6 @@ #ifndef _ENCODING_H_ #define _ENCODING_H_ -int inline_dotify(char *, size_t); -int inline_undotify(char *, size_t); - struct encoder { char name[8]; int (*encode) (char *, size_t *, const void *, size_t); @@ -28,5 +25,9 @@ struct encoder { int (*eats_dots) (void); }; -#endif /* _ENCODING_H_ */ +int unpack_data(char *, size_t, char *, size_t, struct encoder *); +int inline_dotify(char *, size_t); +int inline_undotify(char *, size_t); + +#endif /* _ENCODING_H_ */ diff --git a/src/iodined.c b/src/iodined.c index 942980a..677362f 100644 --- a/src/iodined.c +++ b/src/iodined.c @@ -126,14 +126,6 @@ send_version_response(int fd, version_ack_t ack, uint32_t payload, struct user * write_dns(fd, &u->q, out, sizeof(out)); } -static int -unpack_data(char *buf, size_t buflen, char *data, size_t datalen, struct encoder *enc) -{ - if (!enc->eats_dots()) - datalen = inline_undotify(data, datalen); - return enc->decode(buf, &buflen, data, datalen); -} - static int tunnel_dns(int tun_fd, int dns_fd) {