aboutsummaryrefslogtreecommitdiff
path: root/captain/response.f90
diff options
context:
space:
mode:
Diffstat (limited to 'captain/response.f90')
-rw-r--r--captain/response.f9020
1 files changed, 14 insertions, 6 deletions
diff --git a/captain/response.f90 b/captain/response.f90
index b091a42..0506125 100644
--- a/captain/response.f90
+++ b/captain/response.f90
@@ -27,6 +27,7 @@ implicit none
integer, parameter::GEMINI_CODE_INPUT = 10
integer, parameter::GEMINI_CODE_SUCCESS = 20
integer, parameter::GEMINI_CODE_REDIRECT = 30
+ integer, parameter::GEMINI_CODE_TEMPFAIL = 40
integer, parameter::GEMINI_CODE_PERMFAIL = 50
character(*), parameter::RESPONSE_JSON_OKAY = '{"status": "okay"}'
@@ -567,7 +568,7 @@ contains
end subroutine titan_request_destroy
- subroutine titan_write_to_filename(self, filename)
+ function titan_write_to_filename(self, filename) result(success)
use jessl, only: ssl_read
use logging
implicit none
@@ -580,16 +581,21 @@ contains
integer::bufread
integer(kind=8)::bytes_to_go, written
- integer::i
+ integer::i, istat
+
+ logical::success
!character(128)::msg
- open(newunit=unum, file=filename, status="unknown", action="write", access='stream')
+ success = .false.
+
+ open(newunit=unum, file=filename, status="unknown", &
+ action="write", access='stream', iostat=istat)
bytes_to_go = self%size
written = 0
- do while(bytes_to_go > 0)
+ do while(bytes_to_go > 0 .and. istat == 0)
bufread = ssl_read(self%ssl_connection, buf)
bytes_to_go = bytes_to_go - bufread
@@ -598,7 +604,7 @@ contains
do i = 1, bufread
!write(unum, '(A1)', advance='no') buf(i)
- write(unum) buf(i)
+ write(unum, iostat=istat) buf(i)
written = written + 1
end do
end do
@@ -607,6 +613,8 @@ contains
!call write_log(trim(msg))
close(unum)
- end subroutine titan_write_to_filename
+ success = (istat == 0)
+
+ end function titan_write_to_filename
end module server_response