From 05b91a7ca0aace044621d8db1e82f4772181d893 Mon Sep 17 00:00:00 2001 From: Jeffrey Armstrong Date: Wed, 14 Apr 2021 10:54:27 -0400 Subject: Fixed binary transfers to maintain file integrity. Added globbed file upload capabilities. Fixed memory overrun issues due to problems parsing ls output. --- common/protocol.f90 | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) (limited to 'common/protocol.f90') 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 -- cgit v1.2.3