#ifdef WIN32
#include "win32_compat.h"
-#else
+#endif
+
+#ifdef HAVE_ARPA_INET_H
#include <arpa/inet.h>
-#include <netdb.h>
-#endif/*WIN32*/
+#endif
#ifdef HAVE_POLL_H
#include <poll.h>
#include <sys/socket.h>
#endif
-#include <stdio.h>
-#include <stdlib.h>
-#include <assert.h>
-#include <fcntl.h>
-#include <string.h>
-#include <errno.h>
+#ifdef HAVE_NETDB_H
+#include <netdb.h>
+#endif
+
#ifdef HAVE_SYS_FILIO_H
#include <sys/filio.h>
#endif
+
#ifdef HAVE_SYS_SOCKIO_H
#include <sys/sockio.h>
#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <fcntl.h>
+#include <string.h>
+#include <errno.h>
#include <sys/types.h>
#include "libnfs-zdr.h"
#include "libnfs.h"
assert(rpc->magic == RPC_CONTEXT_MAGIC);
- assert(rpc->magic == RPC_CONTEXT_MAGIC);
-
if (ioctl(rpc->fd, FIONREAD, &available) != 0) {
rpc_set_error(rpc, "Ioctl FIONREAD returned error : %d. Closing socket.", errno);
return -1;
rpc->inpos += count;
if (rpc->inpos == rpc->insize) {
- if (rpc_process_pdu(rpc, rpc->inbuf, pdu_size) != 0) {
- rpc_set_error(rpc, "Invalid/garbage pdu received from server. Closing socket");
- return -1;
- }
- free(rpc->inbuf);
+ char *buf = rpc->inbuf;
+
rpc->inbuf = NULL;
rpc->insize = 0;
rpc->inpos = 0;
+
+ if (rpc_process_pdu(rpc, buf, pdu_size) != 0) {
+ rpc_set_error(rpc, "Invalid/garbage pdu received from server. Closing socket");
+ return -1;
+ }
+ free(buf);
}
return 0;