Timeline
Apr 29, 2014:
- 11:36 PM Ticket #2596 (TCPRecv not returning data, and setting @error to -1) updated by
- I created a video to demonstrate it on my web server when the browser closes the connection, the connection is closed, don't "stays open forever": https://www.youtube.com/watch?v=_s0KJGPtXgw
- 4:56 PM Ticket #2596 (TCPRecv not returning data, and setting @error to -1) updated by
- Ran tests on a different operating system and it confirmed that TCPRcv still can not detect a client side closed web browser socket as older versions did. I tried the @error > 0 solution and still was unable to detect the client side closed web browser socket via @error 10054. Socket stays open forever even when the browser is closed. Something is off there and it is killing autoit3's ability to function efficiently as a web server. Even worse try mixing the two together as a script that can do web serving and accept persistent autoit3 client connections. Can be done but 3.3.8.1. will out speed any newer version scripts at the same time be more reliable. If you wish to continue thinking there is nothing wrong with TCPRecv then fine i'm ok with that. Future autoit3 users should be aware that scripting a web server with the newer versions wont be as effective. 3.3.8.1 will dominate over newer scripts with speed and rely ability. You might as well retire any thought of having a descent web servers using autoit3 for here on out if the issue is not resolved. Good luck.
- 10:03 AM Ticket #2596 (TCPRecv not returning data, and setting @error to -1) updated by
- Sorry for junking things up, just wanted to let it be known that the extra TCP connections were obviously something my browser was doing and was able to fix it by turning off a setting. (Just never seen that before and was confusing me)... That issue has nothing to do with autoit3 and i'm sorry for bringing that up. If you need more insight on the @error for new versions then i'd have to make a video of exactly what i'm experiencing over here to show you, if the new repro script does not help at all. Thanks for your time.
- 8:01 AM Ticket #2596 (TCPRecv not returning data, and setting @error to -1) updated by
- Sorry I was afraid you were going to close the ticket before I could finsih... Here is the reproduction script. Well here it is, hope it helps. Remember the only way to reproduce the error that I know of is two use un-install and re-install between 3.3.8.1 and 3.3.10.2 This also creates a junk file to quickly simulate outgoing requests. Hope that is ok. […]
- 7:51 AM Ticket #2699 (_ArrayAdd $hDataType not documented) closed by
- Fixed: Fixed by revision [10084] in version: 3.3.11.5
- 7:43 AM Ticket #2596 (TCPRecv not returning data, and setting @error to -1) updated by
- Would you like to see my repro script?
- 7:42 AM Ticket #2596 (TCPRecv not returning data, and setting @error to -1) updated by
- Sorry it is not working fine, I have tested all day and it is still not as good as old versions…
- 7:41 AM Ticket #2596 (TCPRecv not returning data, and setting @error to -1) updated by
- Replying to diegomainster@…: > Hello, I created this ticket, once I started ignoring @error = -1, my server is running fine, I'm using version 3.3.10.2, created these 2 scripts to demonstrate how do I detect when the client or server closes the connection, it works for me: > > Server: http://pastebin.com/JPf3A8KE > Client: http://pastebin.com/irVGLpde Thank you for the examples. I'm glad that is working for you. This does not work for what i'm doing. The only difference I can tell here is that i'm not using a Autoit3 client side version to connect to the server. (Don't know why that matters.) Same problem, Autoit3 server can't tell when client web browser closes the socket where older versions could. I'm trying to get an example script working that will show case exactly what is happening between version 3.3.8.1 and the newer version 3.3.10.2 that will hopefully not make things even more confusing. This is what i have learned so far. Autoit3 v3.3.8.1 installed by using the setup download. Works as expected... Autoit3 v3.3.10.2 installed by using the setup download. @error -1 is different, and causes problems when detecting a web browser closed socket. > 0 @error does not help here for whatever reason. Installing the beta version.exe did not seem to help. HOWEVER. When using the beta version on 3.3.8.1 there does not seem to be the problem that genuine 3.3.10.2 installs seem to have.(This was very confusing to me when making the trouble shooting script because I was assuming that it would not work.) So unless you know a better way then I would recommend using the setup installers for switching between autoit3 versions. Uninstall-reinstall between 3.3.8.1 and 3.3.10.2 and then run the bellow repro script. HOWEVER! This too cause me problems! But I do not want to get into detail about it other than to warn you that when I was installing between versions that version 3.3.8.1 was acting out of character and I had to download a fresh copy of the 3.3.8.1 to correct it. (Was getting extra TCP connections to the server that sent no data but would eventually close) Before I was just swapping out exe files between beta and 3.3.8.1 when making this script, but the problem does not seem to start until you install the genuine 3.3.10.2 and then try swapping out with the beta version.
- 7:40 AM Ticket #2596 (TCPRecv not returning data, and setting @error to -1) updated by
- Many thanks, Now I understand better (I think ?) If the connection is closed by the other side you received in 3.3.8.1 -1 now with my TCPConnect implementation you received 10054 which means connection reset by peer which is better as the @error less than 0 can set in other situation I Think you can agree that my TCPConnect() timeout solution is working fine as 3.3.8.1 Cheers Jpm
Apr 28, 2014:
- 9:40 PM Ticket #2596 (TCPRecv not returning data, and setting @error to -1) updated by
- Hello, I created this ticket, once I started ignoring @error = -1, my server is running fine, I'm using version 3.3.10.2, created these 2 scripts to demonstrate how do I detect when the client or server closes the connection, it works for me: Server: http://pastebin.com/JPf3A8KE Client: http://pastebin.com/irVGLpde
- 8:57 PM Ticket #2596 (TCPRecv not returning data, and setting @error to -1) updated by
- The repro script was the one posted in the forum, no change in the logic. THe intend version does not intend to change any of previous except implemenation of the TCPConnect timeout. I am not a specialist of this net function. so please an update of the last post repro script so I can understand what should help. Perhaps you need 2 script one for the server and the other for the client. Thanks for your cooperation
- 5:21 PM Ticket #2596 (TCPRecv not returning data, and setting @error to -1) updated by
- First time running the script get @error 10060 then counts @error -1 forever. All attempts after that show no errors. Only errors right after I switch .exe files from older to newer. Looks like this script is emulating a browser request. You probably already know this but just for the sake of clarity, this problem is most dominant when the script acts like a server and is trying to satisfy the client browser's request. When the request is satisfied the client normally closes the socket. This is where @error -1 was super handy in older versions of TCPRecv, allowing the server to acknowledge the closed socket on it's own end. Newer versions of TCPRecv seem to be vastly compromised because of the new @error levels. Also TCPStartup() never ever shuts down unless the server is deactivated (in my script). It looked like the repo script was constantly starting and stopping. (Don't know if that matters)
- 4:13 PM Ticket #2699 (_ArrayAdd $hDataType not documented) created by
- no documentation to 6 parametr ($hDataType)
- 4:07 PM Ticket #2596 (TCPRecv not returning data, and setting @error to -1) updated by
- Sorry, I forget to upload your repro script a liitle bit modified #2596 TCPRecv @error.au3 try with this new upload and you will see I think the TCPConnect() error
- 3:32 PM Ticket #2596 (TCPRecv not returning data, and setting @error to -1) updated by
- Not exactly sure what i'm suppose to do with that. But this is what I did. Installed the beta version you have there, then ran the repro script and this is what it came out with. getting info -> @error = -3 @extended = 3
- 11:04 AM Ticket #2596 (TCPRecv not returning data, and setting @error to -1) updated by
- If you use the repro script I uploaded does the error occured on the TCPConnect() not on the TCPRecv()?
- 10:00 AM Ticket #2596 (TCPRecv not returning data, and setting @error to -1) updated by
- If I understand what I'm reading then this code should work to detect client side closed sockets but my tests say that the beta still can't detect client side closed sockets. Downloaded the beta .exe from the link and updated my old exe. Problem returns just as I remember it. Sorry... I can't think of any other solutions but to revert back to the older version. This is what i'm using. […] Thank you for your time.
Apr 27, 2014:
- 6:26 PM Ticket #2698 (_ArrayAdd return wrong index) updated by
- Thanks - fixed. M23
- 6:26 PM Ticket #2698 (_ArrayAdd return wrong index) updated by
- Thanks - fixed. M23
- 6:25 PM Ticket #2698 (_ArrayAdd return wrong index) closed by
- Fixed: Fixed by revision [10082] in version: 3.3.11.5
- 3:07 PM Ticket #2698 (_ArrayAdd return wrong index) created by
- I help file for this functions said that Success: the index of last …
Apr 26, 2014:
- 9:27 AM Ticket #2596 (TCPRecv not returning data, and setting @error to -1) updated by
- When I try to add the TCPConnect timeout I found that the @error set -1 for different case. SO I modify the @error to identify uniquely the error. In your case I main error come frome the fact that TCPConnect return timeout When the error occurs You can find an updated version of Autoit3.exe at http://www.autoitscript.com/autoit3/devs/jpm/#2384_UDPTCP_@error/ The .txt describe the change in @error Just play with and report any comments Thanks for your cooperation Jpm
Apr 25, 2014:
- 9:36 AM Ticket #2696 (StringRegExp* return non-participating groups) updated by
- As a clue to help locate the failling logic, here's the demonstration that non-participating groups placed after all capturing groups don't cause the ghost capture bug. Only those appearing before or in between capturing groups trigger the issue. […]
Apr 24, 2014:
- 6:38 PM Ticket #2612 (Au3Check bugs on function reference when function takes byref parameter) closed by
- Fixed: Fixed by revision [10077] in version: 3.3.11.5
- 6:04 PM Ticket #2612 (Au3Check bugs on function reference when function takes byref parameter) updated by
- I made a note of that in my first post. I look at that solution as a temporary workaround.
- 3:36 PM Ticket #2612 (Au3Check bugs on function reference when function takes byref parameter) updated by
- If You declare the function before no error …
- 3:35 PM Ticket #2596 (TCPRecv not returning data, and setting @error to -1) updated by
- Ignoring @error -1 does not make TCPRecv mimic v3.3.8.1. It is still less effective than the genuine TCPRecv version 3.3.8.1. (Can't detect client side closed sockets is the nasty issue) I've tested ignoreing -1 @errors and whatever errors are left can't detect closed client side sockets. This is very bad for servers that respond to web browser requests.
- 9:17 AM Ticket #2697 ("$GW_ENABLEDPOPUP = 6" is missing in "WinAPIConstants.au3") closed by
- Fixed: Fixed by revision [10075] in version: 3.3.11.5
Apr 23, 2014:
- 11:38 PM Ticket #2697 ("$GW_ENABLEDPOPUP = 6" is missing in "WinAPIConstants.au3") created by
- MSDN specifies: GW_ENABLEDPOPUP = 6 The retrieved handle identifies …
- 10:40 PM Ticket #2696 (StringRegExp* return non-participating groups) updated by
- BTW the same effect occurs with groups having repetition count {0} for instance: Pattern: […] Subject: […] In this case RegexBuddy clearly shows the non-participating groups when using full detail mode: Result: […]
- 10:12 PM Ticket #2696 (StringRegExp* return non-participating groups) created by
- Non-participating groups appear as part of the result of our PCRE …
Apr 22, 2014:
- 2:47 AM Ticket #2596 (TCPRecv not returning data, and setting @error to -1) updated by
- TCPRecv is horribly degraded by new update version. Setting @ERROR for blank returns has no practical use as far as I can tell, and only harms the process. TCPRecv needs to be able to detect client side closed sockets as older versions of TCPRecv were able to do. Don't know why @error -1 is set for blank returns and if it needs to be that way then fine, (have no idea why), but please let there be some kind of error setting that can detect client side closed sockets. @error -1 for detecting client side closed sockets was invaluable to TCPRecv heavy scripts and I can not use newer versions of Autoit3 in those scripts because the older TCPRecv is many times over more efficient than the newer versions.
Apr 21, 2014:
- 11:49 AM Ticket #2695 (For ... in ... next loop modifying items) created by
- Would be cool to be able to modify items in a for each loop. …
- 10:38 AM Ticket #2612 (Au3Check bugs on function reference when function takes byref parameter) updated by
- […]
Apr 18, 2014:
- 11:24 PM Ticket #2596 (TCPRecv not returning data, and setting @error to -1) updated by
- Is it possible to revert this behavior back to the v3.3.8.1 state? It was useful in detecting a closed socket on the other end. Thank you.
Apr 17, 2014:
- 5:00 PM Ticket #2692 (Clear up the AutoIt3Wrapper Directives's documentation) updated by
-
Version changed
Automatic ticket cleanup. - 4:23 PM Ticket #2692 (Clear up the AutoIt3Wrapper Directives's documentation) closed by
- Rejected: The current version of the help file already has that text clarified. This is why we don't usually recommend putting in requests for versions prior to the current version or beta versions.
- 12:46 PM Ticket #2693 (_GUICtrlListView_GetItemTextArray - Return Value - proposal) closed by
- Fixed: Fixed by revision [10063] in version: 3.3.11.5
- 2:02 AM Ticket #2694 (AutoitX3_x64.dll not working for ControlListView and ControlTreeView ...) created by
- Have tried with both 3.3.8.1 and current version 3.3.10.2 Running …
Apr 16, 2014:
- 10:11 AM Ticket #2693 (_GUICtrlListView_GetItemTextArray - Return Value - proposal) created by
- in Return Value section now there is: […] description is not …
- 7:40 AM Ticket #2692 (Clear up the AutoIt3Wrapper Directives's documentation) created by
- Run Before And After Directives The following directives can …
Apr 9, 2014:
- 12:40 AM Ticket #2580 (Aut2Exe failing to run multiple times on Windows XP prior to SP3) updated by
- Delay 25"
Apr 8, 2014:
- 8:48 AM Ticket #2688 (StringToBinary + ConsoleWrite) updated by
- > Consolewrite by itself does not convert any variable Yes it does! Or rather: there is no consistency at all in the way various variants "print" themselves thru the method invoked by ConsoleWrite: * all strings are "converted" (i.e. emasculated) to ANSI, which is terribly wrong for a program claiming to be Unicode-aware. UTF-8 should be the default here. * integers, doubles, some keywords (True, False, Default) and pointers are consolewritten as strings, * Null and functions consolewrite nothing at all, * Binary spills verbatim. […]
Apr 7, 2014:
Apr 1, 2014:
- 9:03 PM Ticket #2596 (TCPRecv not returning data, and setting @error to -1) updated by
- I have found the same problem with UDPRecv returning the error -1 when empty. I have set the error handling to ignore error=-1.
- 8:33 AM Ticket #2690 (Win..... Return Value Proposal.) updated by
-
Summary changed
Mar 31, 2014:
- 8:36 AM Ticket #1935 (_IEBodyReadText with IE9 failed) updated by
- Finally I found how to have it working disabling the Protected Mode on Internet security zone. Look a little strange that local file follow the same rule as the Internet ones but why not
- 8:35 AM Ticket #1938 (_IEQuit IE9) updated by
- Finally I found how to have it working disabling the Protected Mode on Internet security zone. Look a little strange that local file follow the same rule as the Internet ones but why not
Mar 29, 2014:
- 4:11 AM Ticket #2691 (Bitshift is returning incorect results) updated by
- Incorrect reading of the help file. "Bit operations are performed as 32-bit integers" 3442917988 is in fact the 32-bit integer -852049308.
Note:
See TracTimeline
for information about the timeline view.
