Some weird stuff in there.
(1) You are using Server.GetLastError(), but that's only usable on error handling *PAGES* (and, according to IIS docs, even then it's only available to a page that is custome handling a 500;100 ASP error). It has no applicability to errors that you are "trapping" using ON ERROR RESUME NEXT.
(2) You are comparing what you claim to be a number (AspErr.Number) to a *STRING*.
(3) You use ON ERROR RESUME NEXT, but you never *cancel* that, so if (for example) you had a typo in your code 30 or 40 lines after all this code, you would never know it.
(4) You use
next x which isn't legal VBScript. (VBScript does NOT allow any variable name after the keyword
next.)
Code just seems overly complex to me.
Why not:
Code:
...
parse_continue = False ' assume the worst
For attempt = 1 To 4
On Error Resume Next ' this automatically does Err.Clear, but go ahead if you are paranoid
' why bother doing first attempt outside the loop?
xmlHttp.Send ping_packet ' the parens here are, strictly speaking, an error
oops = Err.Number ' Err.Number SHOULD have the cause...not Server.GetLastError
On Error GoTo 0 ' *ALWAYS* cancel this ASAP!!!
Select Case oops
Case 0
parse_continue = True
Exit For
Case -2147012867 ' see? compare as a NUMBER
' really don't need to do anything, right?
Case Else
' is there any point in continuing if the error isn't one you can handle?
Exit For
End Select
Next
...
%>