Dyalog / Jarvis

APL-based web service framework supporting JSON or REST
https://dyalog.github.io/Jarvis/
MIT License
33 stars 6 forks source link

Failing to respond on unexpected data in JSON Server mode #4

Closed arcfide closed 4 years ago

arcfide commented 4 years ago

If you are attempting to access a route and something unexpected happens, such as a GET request instead of a POST request for the JSON Server, the server does not respond with any data. I believe this is due to a resource leak located around here:

https://github.com/Dyalog/Jarvis/blob/ccd05ffa357f880252ae630080c63efd3b1fb8d7/Source/Jarvis.dyalog#L529

This line and the two/three after it appear to return from the HandleRequest function having updated the response object with errors, but never actually sending the response. As a result, I believe that HandleRequest returns a 0 code at the end and does not expunge the object, but then does nothing with it. This essentially leaves the object in la la land for an indeterminant amount of time and the result is an unresponsive system on the front end.

When a new, valid request comes in, it appears to trigger something that pushes out some clean up and results in an error code 1105 for these responses:

2020/02/15 @ 20:59:20 - RunServer: DRC.Wait reported error 1105  ERR_RECV  Could not receive data  on SRV00000000.CON00000000 (IP Address [::1]:53760)
2020/02/15 @ 20:59:20 - RunServer: DRC.Wait reported error 1105  ERR_RECV  Could not receive data  on SRV00000000.CON00000001 (IP Address [::1]:53761)