31adcd67f9
Signed-off-by: Steve Dickson <steved@redhat.com>
84 lines
2.2 KiB
Diff
84 lines
2.2 KiB
Diff
commit a4fa582908b9c63957240cb0cb68b59d56244ef5
|
|
Author: Bodo Stroesser <bstroesser@ts.fujitsu.com>
|
|
Date: Thu Nov 6 13:26:00 2014 -0500
|
|
|
|
write_vc: fix write retry loop for nonblocking mode
|
|
|
|
This is a simple fix for the write retry loop that is used on
|
|
non-blocking connections if write() failed with -EAGAIN.
|
|
|
|
Additionally it removes a redundant if () {}
|
|
|
|
Erroneously at each cycle of the loop the length of the data
|
|
to send is incremented and the buffer pointer is decremented.
|
|
Thus, it might happen that:
|
|
* the application crashes
|
|
* data from the memory before the buffer is sent
|
|
|
|
Signed-off-by: Bodo Stroesser <bstroesser@ts.fujitsu.com>
|
|
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
diff --git a/src/svc_vc.c b/src/svc_vc.c
|
|
index 4c70de8..4d3ea51 100644
|
|
--- a/src/svc_vc.c
|
|
+++ b/src/svc_vc.c
|
|
@@ -559,20 +559,19 @@ write_vc(xprtp, buf, len)
|
|
cd->strm_stat = XPRT_DIED;
|
|
return (-1);
|
|
}
|
|
- if (cd->nonblock && i != cnt) {
|
|
- /*
|
|
- * For non-blocking connections, do not
|
|
- * take more than 2 seconds writing the
|
|
- * data out.
|
|
- *
|
|
- * XXX 2 is an arbitrary amount.
|
|
- */
|
|
- gettimeofday(&tv1, NULL);
|
|
- if (tv1.tv_sec - tv0.tv_sec >= 2) {
|
|
- cd->strm_stat = XPRT_DIED;
|
|
- return (-1);
|
|
- }
|
|
+ /*
|
|
+ * For non-blocking connections, do not
|
|
+ * take more than 2 seconds writing the
|
|
+ * data out.
|
|
+ *
|
|
+ * XXX 2 is an arbitrary amount.
|
|
+ */
|
|
+ gettimeofday(&tv1, NULL);
|
|
+ if (tv1.tv_sec - tv0.tv_sec >= 2) {
|
|
+ cd->strm_stat = XPRT_DIED;
|
|
+ return (-1);
|
|
}
|
|
+ i = 0; /* Don't change buf and cnt */
|
|
}
|
|
}
|
|
|
|
|
|
commit e34b252aaf9b7932c17f5d6b271e296220d31dc4
|
|
Author: Mike Frysinger <vapier@gentoo.org>
|
|
Date: Tue Aug 12 10:50:34 2014 -0400
|
|
|
|
libtirpc: include stdarg.h when used
|
|
|
|
The debug.h header uses va_list but doesn't include stdarg.h which
|
|
can lead to random build failures.
|
|
|
|
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
|
|
Signed-off-by: Steve Dickson <steved@redhat.com>
|
|
|
|
diff --git a/src/debug.h b/src/debug.h
|
|
index afc8d57..c971ac3 100644
|
|
--- a/src/debug.h
|
|
+++ b/src/debug.h
|
|
@@ -21,6 +21,8 @@
|
|
|
|
#ifndef _DEBUG_H
|
|
#define _DEBUG_H
|
|
+
|
|
+#include <stdarg.h>
|
|
#include <syslog.h>
|
|
|
|
extern int libtirpc_debug_level;
|