From 85a6816e7840e6b8cdff51b7c0cfad36082c01ec Mon Sep 17 00:00:00 2001 From: Jeffrey Armstrong Date: Wed, 7 Apr 2021 15:40:25 -0400 Subject: Results now posted back correctly using titan protocol --- common/protocol.f90 | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) (limited to 'common/protocol.f90') diff --git a/common/protocol.f90 b/common/protocol.f90 index 38f2cf1..37e3205 100644 --- a/common/protocol.f90 +++ b/common/protocol.f90 @@ -230,6 +230,11 @@ contains logical, dimension(4)::successes integer::i, ierr, bytes_read, bytes_written, total_written + ! For direct processing of the reponse line + integer::response_line_index, bytes_received + character(1024)::response_line + logical::response_line_completed + returncode = -1 rewind(unit_number) @@ -278,7 +283,32 @@ contains end do if(total_written >= file_length) then - returncode = STATUS_SUCCESS + + response_line_completed = .false. + response_line = " " + response_line_index = 0 + + bytes_received = retrieve_characters(conn%ssl, buffer) + do while(bytes_received > 0) + + do i=1, bytes_received + response_line_index = response_line_index + 1 + response_line(response_line_index:response_line_index) = buffer(i) + + ! If we encountered our first newline, we have a complete status + ! line - handle it here + if(buffer(i) == char(10) .or. response_line_index == 1024) then + response_line_completed = .true. + + returncode = get_return_code(response_line) + + end if + + end do + + bytes_received = retrieve_characters(conn%ssl, buffer) + end do + else returncode = STATUS_LOCALFAIL end if -- cgit v1.2.3