|
@@ -1,8 +1,16 @@
|
|
#include <resolv.h>
|
|
#include <resolv.h>
|
|
|
|
+#include <string.h>
|
|
|
|
|
|
int __res_send(const unsigned char *msg, int msglen, unsigned char *answer, int anslen)
|
|
int __res_send(const unsigned char *msg, int msglen, unsigned char *answer, int anslen)
|
|
{
|
|
{
|
|
- int r = __res_msend(1, &msg, &msglen, &answer, &anslen, anslen);
|
|
|
|
|
|
+ int r;
|
|
|
|
+ if (anslen < 512) {
|
|
|
|
+ unsigned char buf[512];
|
|
|
|
+ r = __res_send(msg, msglen, buf, sizeof buf);
|
|
|
|
+ if (r >= 0) memcpy(answer, buf, r < anslen ? r : anslen);
|
|
|
|
+ return r;
|
|
|
|
+ }
|
|
|
|
+ r = __res_msend(1, &msg, &msglen, &answer, &anslen, anslen);
|
|
return r<0 || !anslen ? -1 : anslen;
|
|
return r<0 || !anslen ? -1 : anslen;
|
|
}
|
|
}
|
|
|
|
|