author | Tomas Klacko <tomas.klacko@oracle.com> |
Mon, 18 May 2015 01:59:30 -0700 | |
branch | s11-update |
changeset 4303 | fe962209b82f |
permissions | -rw-r--r-- |
4303
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
1 |
http://bugs.proftpd.org/show_bug.cgi?id=4162 |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
2 |
|
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
3 |
--- a/modules/mod_xfer.c 2015-02-03 20:54:22.857151750 -0800 |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
4 |
+++ b/modules/mod_xfer.c 2015-02-03 21:10:36.020000070 -0800 |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
5 |
@@ -31,6 +31,9 @@ |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
6 |
|
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
7 |
#include "conf.h" |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
8 |
#include "privs.h" |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
9 |
+#ifdef _SOLARIS_DTRACE |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
10 |
+#include "ftp_provider_impl.h" |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
11 |
+#endif |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
12 |
|
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
13 |
#ifdef HAVE_SYS_SENDFILE_H |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
14 |
# include <sys/sendfile.h> |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
15 |
@@ -1784,7 +1787,24 @@ |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
16 |
* be doing short writes, and we ideally should be more resilient/graceful |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
17 |
* in the face of such things. |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
18 |
*/ |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
19 |
+#ifdef _SOLARIS_DTRACE |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
20 |
+ if (ftp_transfer_start_enabled()) { |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
21 |
+ ftpproto_t proto; |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
22 |
+ FTP_TRANSFER_PROTO(&proto, stor_fh, 0); |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
23 |
+ ftp_transfer_start(&proto); |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
24 |
+ } |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
25 |
+#endif |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
26 |
+ |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
27 |
res = pr_fsio_write(stor_fh, lbuf, len); |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
28 |
+ |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
29 |
+#ifdef _SOLARIS_DTRACE |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
30 |
+ if (ftp_transfer_done_enabled() && res == len) { |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
31 |
+ ftpproto_t proto; |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
32 |
+ FTP_TRANSFER_PROTO(&proto, stor_fh, res); |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
33 |
+ ftp_transfer_done(&proto); |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
34 |
+ } |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
35 |
+#endif |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
36 |
+ |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
37 |
if (res != len) { |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
38 |
int xerrno = EIO; |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
39 |
cmd->error_code = errno; |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
40 |
@@ -2203,7 +2223,24 @@ |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
41 |
if (XFER_ABORTED) |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
42 |
break; |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
43 |
|
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
44 |
+#ifdef _SOLARIS_DTRACE |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
45 |
+ if (ftp_transfer_start_enabled()) { |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
46 |
+ ftpproto_t proto; |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
47 |
+ FTP_TRANSFER_PROTO(&proto, retr_fh, 0); |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
48 |
+ ftp_transfer_start(&proto); |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
49 |
+ } |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
50 |
+#endif |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
51 |
+ |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
52 |
len = transmit_data(nbytes_sent, &curr_pos, lbuf, bufsz); |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
53 |
+ |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
54 |
+#ifdef _SOLARIS_DTRACE |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
55 |
+ if (ftp_transfer_done_enabled() && len > 0) { |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
56 |
+ ftpproto_t proto; |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
57 |
+ FTP_TRANSFER_PROTO(&proto, retr_fh, len); |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
58 |
+ ftp_transfer_done(&proto); |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
59 |
+ } |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
60 |
+#endif |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
61 |
+ |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
62 |
if (len == 0) |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
63 |
break; |
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
64 |
|
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
65 |
|
fe962209b82f
20553228 add proftpd dtrace provider from AK to Userland
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
66 |