Jump to content

RapidQueuer 2.4.4


Datenshi
 Share

Recommended Posts

I am getting errors

## Unexpected Filesize, lost connection or the download was damaged

for every file I try to download from RapidQueuer.

Yes i heard you the first time, when did it begin to have problems? was it after you changed the code to refresh ip? I'm gonna need more information in order to help you.

That error message happens when the filesize received from the server does not match the filesize of the file when the download was completed. This issue doesn't seem to be effecting anyone but you atm, so i would think it's caused by the changes in the code, Did you try to use the original Rapidqueuer again? backup your custom version and try the original, if the problem goes away its probably because of a modification.

Link to comment
Share on other sites

  • Replies 278
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Hello

Thanks for your reply.

Still I'm getting the same error with original .exe file.

What could be the reason of this issue.

This is what in error file:

[2009/10/21]-[05:39:21] -- > http://rapidshare.com/files/67286487/12_Angry_Men_1957.part3.rar ## Unexpected Filesize, lost connection or the download was damaged

[2009/10/21]-[05:42:18] -- > http://rapidshare.com/files/67286507/12_Angry_Men_1957.part4.rar ## Unexpected Filesize, lost connection or the download was damaged

even with original .exe file

Link to comment
Share on other sites

hm, did you see if the download reached 100%? You can try and add

opt("TCPTimeout",1000)

to the code and recompile, see if it helps. It tells script to timeout a connection after 1sec instead of 100ms.

Btw, please don't post those links here. I don't think the mods want that, besides I've already tested if it had something to do with the links but it doesn't as i can download them fine.

Edited by Datenshi
Link to comment
Share on other sites

Hello

Were exactly you want me to place this code?

As I'm not programmer I do not have much idea about programming, so please suggest me this.

Thanks

Replace:

Opt("TrayMenuMode", 1)
Opt("TrayOnEventMode", 1)
Opt("OnExitFunc", "closeclean")

With:

Opt("TrayMenuMode", 1)
Opt("TrayOnEventMode", 1)
Opt("OnExitFunc", "closeclean")
opt("TCPTimeout",1000)

And compile, or run it in SCiTE.

Edited by Datenshi
Link to comment
Share on other sites

Were exactly you want me to place this code?

It doesn't really matter where you add it, provided it's before the TCP functions are used. For a good place, search the script for the "Opt" function (you will find 3 of them near the top of the file), and add it there.
Link to comment
Share on other sites

Hello

Nothing has changed.

What I'm getting in progress window is

sleeping: xxx seconds then

window with file name, 0kb/s, eta and so on

and after some time as you have suggested to place the reconnect.bat file in dhcp_iprefresh function, it's running.

and after completing or getting new ip, then again same process is repeating

and finally error list is full with all errors

File in not getting download

This is how it's going since day1

but my friend who has fixed ip, has also the same issue with this application

please some more suggestions

thanks

Link to comment
Share on other sites

  • 4 weeks later...

There's a bug which has been reported that's causing a crash often when Rapidshare reports "too many users downloading atm", it seems they made some changes as this bug wasn't occurring before their design update. I'm trying to locate the reason but its going somewhat slow as this error output is not common enough to allow a good debug environment. Just know that I'm working on it.

I will update this post later.

Edited by Datenshi
Link to comment
Share on other sites

Hey, they are changing ISP(internet service provider) where i live and there seems to be a problem with the provider, So I don't have access to internet at home(or phone). Im posting this from a friends house. Im pretty much done with 2.4 and will be releasing it as soon as i get my internet at home. Hard to debug RapidQueuer without internet access :) anyway hang in there, btw 2.4 will have an optional settings file to allow selected options to be saved. It will also store the url from the url scanner feature and cookie(if user allows). Also put in code to prevent PC going into sleepmode while downloading(thanks Markos).

An extensive changelog will be posted upon release.

Edited by Datenshi
Link to comment
Share on other sites

  • 2 weeks later...

Im not able to debug this atm, can someone just check if its still affected by the slots bug.

http://www.fetgrek.com/RapidQueuer_2.4_RC.exe

This is not the official v2.4, its a debugging version.

Datenshi,

I tested this 2.4 version on one file and the progress window issued the following at least 6 times that I noticed (every 30 seconds), before beginning and completing the download.

Non-Critical Error

Too Many users/Waiting for slot

Trying again in 30sec.

I would say that was successful, assuming it works on more than one file. I'll have to test multiple files using my script in the "dhcp_refresh_external_exec" key of the INI file, but I have to wait for a huge download that is currently in progress before doing that.

BTW, in my experience it is useless to check for a slot before 120 seconds. At least that's how it works manually with Firefox.

ILLBeBack

Link to comment
Share on other sites

Thanks man, this thing was the most annoying bug i have ever encountered, its such a bad debug environment cuz it relies on Rapidshare doing something unexpected as well as the no slots error being active. Very hard crash to consistently reproduce. Anyway, i haven't gotten it to crash with normal use now for about a day. I'm doing some testing of other features i added meanwhile. The slot check every 30s is probably useless now you're right, I changed it back to 30 for testing purpose but will set it back to 2min, they don't allow IP's to check more then ones every 2min now.

Link to comment
Share on other sites

Datenshi,

For my second test of 2.4, I placed 3 URLs in the list, and specified my external script in the INI file. The first URL waited patiently for a slot with the same messages as in my first test, eventually obtained a slot and downloaded the file. The DHCP message appeared and RQ ran my external script.

Unfortunately, when my external script completed, and a new IP was issued, RQ continued to wait. After 2 minutes I stopped and restarted RQ in order to continue.

May I suggest that RQ monitors the running processes to determine when the external script completes, then check to see if the IP has changed.

ILLBeBack

Link to comment
Share on other sites

Hm that's strange, You sure u waited long enough for the connection to work? 2min does sound like it should be enough tho.

Func DHCP_IPRefresh() ; Handles release and requesting of new IP between downloads, requires direct DHCP connection to ISP
    ;#### add .bat/.exe external exec ##
    If $ExtIPResetPath <> "" Then
        $ExtIPResetName = StringSplit($ExtIPResetPath,'\')
        $ExtIPResetName = $ExtIPResetName[$ExtIPResetName[0]]
    ProgressSet(0, "DHCP:" & @CRLF & " Running "&$ExtIPResetName&" to renew IP.", "-")
    TraySetToolTip("RapidQueuer" & @CRLF & "DHCP: Running "&$ExtIPResetName&" to renew IP.")
    Run($ExtIPResetPath, "", @SW_HIDE) ; Run external exec
    $TimerTimeout = TimerInit()
    Else
    ProgressSet(0, "DHCP:" & @CRLF & "Releasing(" & @IPAddress1 & ")and Requesting a new IP.", "-")
    TraySetToolTip("RapidQueuer" & @CRLF & "DHCP: Releasing(" & @IPAddress1 & ")and Requesting a new IP.")
    Run("ipconfig /release", "", @SW_HIDE) ; Releases current IP
    Sleep(2000)
    $TimerTimeout = TimerInit()
    Run("ipconfig /renew", "", @SW_HIDE) ; Requests new IP from ISP DHCP server
    Endif
    Do ; waits for internet to come back on after IP reset
        Sleep(2000)
        If TimerDiff($TimerTimeout) > 900000 Then
            MsgBox(0, "Timed Out", "RapidQueuer waited 15min for DHCP server to renew IP." & @CRLF & "IP Renew is useless in this case and the option should not be enabled. Blame ISP!")
            Exit
        EndIf
    Until Ping("www.google.com") > 0 Or Ping("www.rapidshare.com") > 0 ; try both in case one is down.
EndFunc   ;==>DHCP_IPRefresh

As you can see after it runs the script/program it enters a sleep loop until it can ping either google.com or rapidshare.com.

Edited by Datenshi
Link to comment
Share on other sites

Hm that's strange, You sure u waited long enough for the connection to work? 2min does sound like it should be enough tho.

As you can see after it runs the script/program it enters a sleep loop until it can ping either google.com or rapidshare.com.

Yep, I'm positive I waited at least 2 minutes after my external script completed. I also watched to see that my modem's Internet Light went dark and came back on before monitoring the time. In subsequent tests, I let it run over 5 minutes and the progress window showing the external script name never goes away.

After studying your function, I think what is happening is the Do loop begins before the external script has a chance to disconnect the modem. Actually, I know it does because I made a test script from your function (without the progress window) and the function completes before my modem's Internet light reacts to my external sctipt.

A Do loop after the Run function, that will wait for the Internet connection to be broken before continuing, should resolve the issue.

That said, when RQ calls my external script, the progress window continues to say the following:

-

DHCP:

Running (my script name)

and the progress bar does not advance. I don't know why this is happening, but I assume RQ is not getting to the place where the progress window is reset.

ILLBeBack

Link to comment
Share on other sites

ILLBeBack changed the function, check if it works better.

http://www.fetgrek.com/RapidQueuer_2.4_RC.exe

This is not the official v2.4, its a debugging version.

Func DHCP_IPRefresh() ; Handles release and requesting of new IP between downloads, requires direct DHCP connection to ISP
    ;#### add .bat/.exe external exec ##
    $ExtPID = ""
    If $ExtIPResetPath <> "" Then
        $ExtIPResetName = StringSplit($ExtIPResetPath,'\')
        $ExtIPResetName = $ExtIPResetName[$ExtIPResetName[0]]
    ProgressSet(0, "DHCP:" & @CRLF & " Running "&$ExtIPResetName&" to renew IP.", "-")
    TraySetToolTip("RapidQueuer" & @CRLF & "DHCP: Running "&$ExtIPResetName&" to renew IP.")
    $ExtPID = Run($ExtIPResetPath, "", @SW_HIDE) ; Run external exec
    Sleep(2000)
    $TimerTimeout = TimerInit()
    Else
    ProgressSet(0, "DHCP:" & @CRLF & "Releasing(" & @IPAddress1 & ")and Requesting a new IP.", "-")
    TraySetToolTip("RapidQueuer" & @CRLF & "DHCP: Releasing(" & @IPAddress1 & ")and Requesting a new IP.")
    Run("ipconfig /release", "", @SW_HIDE) ; Releases current IP
    Sleep(2000)
    $TimerTimeout = TimerInit()
    Run("ipconfig /renew", "", @SW_HIDE) ; Requests new IP from ISP DHCP server
    Endif

    If $ExtPID <> "" Then
    ProgressSet(0, "DHCP:" & @CRLF & " Waiting for "&$ExtIPResetName&" to close.", "-")
    TraySetToolTip("RapidQueuer" & @CRLF & "DHCP: Waiting for "&$ExtIPResetName&" to close.")
    Do
        Sleep(1000)
    Until TimerDiff($TimerTimeout) > 30000 OR ProcessExists($ExtPID) = 0
    Endif
    ProgressSet(0, "DHCP:" & @CRLF & " Checking/Waiting for Internet to work.", "-")
    TraySetToolTip("RapidQueuer" & @CRLF & "DHCP: Checking/Waiting for Internet to work.")
    Do ; Waits for internet to come back on after IP reset
        Sleep(2000)
        If TimerDiff($TimerTimeout) > 900000 Then
            MsgBox(0, "Timed Out", "RapidQueuer waited 15min for DHCP server to renew IP/or external IP renew script to close." & @CRLF & "IP Renew is useless in this case and the option should not be enabled. Blame ISP!")
            Exit
        EndIf
    Until Ping("www.google.com") > 0 Or Ping("www.rapidshare.com") > 0 ; try both in case one is down.
EndFunc   ;==>DHCP_IPRefresh

Waits initially for 30s for the process to close, most scripts are done within that time. But internet may not work so we still have to ping loop to make sure we can connect.

Ah well time to sleep:)

Edited by Datenshi
Link to comment
Share on other sites

Datenshi,

The new ProcessWaitClose code gives my modem the time it needs to disconnect from the Internet, but there is a problem with the 10 second timeout option. That's because it usually takes at least 40 seconds for my modem to cycle, and sometimes even longer, and my script waits for that to occur so that it can ensure the IP actually changed. If the IP has not changed, my script repeats the cycle until it does. I find that 10%, or more, of the time the IP does not change, so this happens rather often. And when it does, it has taken up to 6 attempts before a new IP is issued.

As such, if you wish to have a timer assigned to ProcessWaitClose, then make it so we can specify the value in the INI file, but in my opinion a timer is not required as the external script assumes control, and RQ can simply wait until it closes. Without this ability, scripts like mine will certainly cause conflicts when it makes additional attempts to get a new IP and RQ has already continued with the next download.

BTW, at this time of day, RS does not limit slots to free users, so this latest test does not does reflect that, although I suspect all would be well if it did.

Link to comment
Share on other sites

hi, i actually changed the code twice..i scrapped the processwaitclose idea. I hoped you weren't fast enough to download the first ;)

If $ExtPID <> "" Then
    ProgressSet(0, "DHCP:" & @CRLF & " Waiting for "&$ExtIPResetName&" to close.", "-")
    TraySetToolTip("RapidQueuer" & @CRLF & "DHCP: Waiting for "&$ExtIPResetName&" to close.")
    Do
        Sleep(1000)
    Until TimerDiff($TimerTimeout) > 30000 OR ProcessExists($ExtPID) = 0
    Endif

Without a timeout RQ will be stuck in the loop forever if something happens, you would have 15min for the script to change its IP. If it takes longer then that its essentially lowering performance. The first loop is practically useless, it just lets the user know RQ is waiting for the process to close. After 30sec the loop times out and it enters the "Checking/Waiting for Internet to work." loop with a timeout of 15min. Whether your script finished in the first 30s loop or the 15min loop doesn't really matter, because if the connection work and RQ gets a ping response it will exit the function.

If your script keeps track of new/used IP's and changes even if the assigned IP work then It'll probably cause problems most people just send a tcp packet to their router or modem to request a new IP. I'll add an option to the settings.ini to allow for the 30s timeout value to be changed in the first loop, with a max value of 900(15min) there's no point in waiting over 15min for a new IP as the old one would have worked by then.

Edited by Datenshi
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...