aboutsummaryrefslogtreecommitdiff
path: root/common/protocol.f90
diff options
context:
space:
mode:
authorJeffrey Armstrong <jeff@approximatrix.com>2021-04-14 10:54:27 -0400
committerJeffrey Armstrong <jeff@approximatrix.com>2021-04-14 10:54:27 -0400
commit05b91a7ca0aace044621d8db1e82f4772181d893 (patch)
tree44bf7c8c284c3363f353553c12046e5ca4de40b7 /common/protocol.f90
parent14441b7f0d6dd0a101b38a4500fe1f662ae00215 (diff)
downloadlevitating-05b91a7ca0aace044621d8db1e82f4772181d893.tar.gz
levitating-05b91a7ca0aace044621d8db1e82f4772181d893.zip
Fixed binary transfers to maintain file integrity. Added globbed file upload capabilities. Fixed memory overrun issues due to problems parsing ls output.
Diffstat (limited to 'common/protocol.f90')
-rw-r--r--common/protocol.f9027
1 files changed, 18 insertions, 9 deletions
diff --git a/common/protocol.f90 b/common/protocol.f90
index 992283c..46838b8 100644
--- a/common/protocol.f90
+++ b/common/protocol.f90
@@ -179,7 +179,8 @@ contains
else
- write(unit_number, '(A1)', advance='no') buffer(i)
+ !write(unit_number, '(A1)', advance='no') buffer(i)
+ write(unit_number) buffer(i)
end if
@@ -251,35 +252,43 @@ contains
if(conn%code == CONNECTION_OPEN) then
- successes(1) = send_string(conn%ssl, trim(url), trimming=.false.)
- successes(2) = send_string(conn%ssl, ";token="//trim(token), trimming=.false.)
+ successes(1) = send_string(conn%ssl, trim(url), trimming=.false., allow_trailing_null=.false.)
+ successes(2) = send_string(conn%ssl, ";token="//trim(token), &
+ trimming=.false., allow_trailing_null=.false.)
if(present(is_plain_text)) then
if(is_plain_text) then
- successes(3) = send_string(conn%ssl, ";mime=text/plain", trimming=.false.)
+ successes(3) = send_string(conn%ssl, ";mime=text/plain", &
+ trimming=.false., allow_trailing_null=.false.)
else
- successes(3) = send_string(conn%ssl, ";mime=application/octet-stream", trimming=.false.)
+ successes(3) = send_string(conn%ssl, ";mime=application/octet-stream", &
+ trimming=.false., allow_trailing_null=.false.)
end if
else
- successes(3) = send_string(conn%ssl, ";mime=application/octet-stream", trimming=.false.)
+ successes(3) = send_string(conn%ssl, ";mime=application/octet-stream", &
+ trimming=.false., allow_trailing_null=.false.)
end if
write(file_length_text, '(I14)') file_length
file_length_text = adjustl(file_length_text)
- successes(4) = send_string(conn%ssl, ";size="//trim(file_length_text)//c_carriage_return//c_new_line, trimming=.false.)
+
+ successes(4) = send_string(conn%ssl, &
+ ";size="//trim(file_length_text)//c_carriage_return//c_new_line, &
+ trimming=.false., &
+ allow_trailing_null=.false.)
if(all(successes, 1)) then
total_written = 0
bytes_read = read_into_buffer(unit_number, buffer)
- Print *, "bytes read for sending: ", bytes_read
+ !Print *, "bytes read for sending: ", bytes_read
do while(bytes_read > 0)
bytes_written = ssl_write(conn%ssl, buffer(1:bytes_read))
total_written = total_written + bytes_written
bytes_read = read_into_buffer(unit_number, buffer)
- Print *, "bytes read for sending now: ", bytes_read, " and so far, we wrote", total_written
+ !Print *, "bytes read for sending now: ", bytes_read, " and so far, we wrote", total_written
end do
if(total_written >= file_length) then