diff options
-rw-r--r-- | main.F90 | 10 | ||||
-rw-r--r-- | protocol.f90 | 17 |
2 files changed, 23 insertions, 4 deletions
@@ -98,6 +98,7 @@ implicit none running = .true. loaded = .false. + redo_layout = .false. call r%initialize() locations_visited => null() @@ -121,8 +122,8 @@ implicit none call r%report_status("Requesting "//trim(desired_url)) return_code = request_url(desired_url, io, return_type, bh) - populated = .true. - + populated = .not. is_failure_code(return_code) + Print *, "return code: ", return_code call update_status(r, desired_url, return_code) end if @@ -179,7 +180,12 @@ implicit none end if redo_layout = .false. + + else if(.not. redo_layout .and. is_failure_code(return_code) .and. len_trim(current_url) == 0) then + call r%report_status("Exiting without initial site") + running = .false. + end if do while(loaded .and. running) diff --git a/protocol.f90 b/protocol.f90 index b0699a6..4948325 100644 --- a/protocol.f90 +++ b/protocol.f90 @@ -31,6 +31,7 @@ implicit none integer, parameter::STATUS_CERTREQ = 6 integer, parameter::STATUS_BADRESPONSE = 7 integer, parameter::STATUS_LOCALFAIL = -1 + integer, parameter::STATUS_CONNECTFAIL = -2 integer, parameter::BUFFER_SIZE = 256 @@ -38,6 +39,17 @@ implicit none contains + function is_failure_code(return_code) + implicit none + + integer, intent(in)::return_code + logical::is_failure_code + + is_failure_code = any(return_code == & + [STATUS_CONNECTFAIL, STATUS_LOCALFAIL, STATUS_BADRESPONSE, STATUS_PERMFAIL, STATUS_TEMPFAIL]) + + end function is_failure_code + subroutine get_mimetype(status_line, return_type) implicit none @@ -225,16 +237,17 @@ contains else - returncode = -1 + returncode = STATUS_CONNECTFAIL write(unit_number, *) "Send Error: Could Not Send Request" end if else - returncode = -1 + returncode = STATUS_CONNECTFAIL write(unit_number, *) "Connection Error: "//trim(translate_connection_code(conn%code)) write(*, *) "Connection Error: "//trim(translate_connection_code(conn%code)) + end if call close_connection(conn) |