severity 767523 important thanks On Fri, 2014-11-07 at 14:44 +0100, John Paul Adrian Glaubitz wrote: > Well, while you have fixed the issue in unstable now, you are now > running into the problem that the package won't migrate into testing > due to the freeze and the bug still remains open there. > > Have you actually contacted the release team and ask them for an > unblock? I don't see any chance that they will actually unblock > a completely new upstream version and wmweather+ will certainly > be removed from testing as a result.
Hi John, Good point. Sadly, the timing for the new package was a little unfortunate. I have looked into the code and prepared the relevant diff (from upstream 2.14 actually) that fixes the problem in version 2.13. For the record, I'll attach it to this mail. It might serve as a minimal targeted fix to get into testing during the freeze. However, looking at the code, I'm not sure severity "grave" is justified, maybe the bug only manifests under certain circumstances? Do you experience the bug? Therefore, downgrading to "important" for now. Regards, Martin
diff -ru wmweather+-2.13_orig/download.c wmweather+-2.13/download.c --- wmweather+-2.13_orig/download.c 2010-08-17 21:25:09.000000000 +0200 +++ wmweather+-2.13/download.c 2014-11-07 16:58:32.585042368 +0100 @@ -115,12 +115,26 @@ struct timeval tv; int maxfd, n, x; CURLMsg *msg; + CURLMcode status; - if(sleeptime>0){ + if(sleeptime>0) do { FD_ZERO(&rd); FD_ZERO(&wr); FD_ZERO(&er); - curl_multi_fdset(multi_handle, &rd, &wr, &er, &maxfd); + errno = 0; + status = curl_multi_fdset(multi_handle, &rd, &wr, &er, &maxfd); + if(status!=CURLM_OK){ + warn("Could not fetch curl fdset: %s", curl_multi_strerror(status)); + usleep(sleeptime); + return; + } + if(maxfd<0){ + /* It's not something we can select on, sleep and then blindly call + * curl_multi_perform. + */ + usleep(sleeptime); + break; + } tv.tv_sec=0; tv.tv_usec=sleeptime; @@ -145,7 +159,8 @@ usleep(sleeptime); return; } - } + } while(0); + while(curl_multi_perform(multi_handle, &x)==CURLM_CALL_MULTI_PERFORM); while((msg=curl_multi_info_read(multi_handle, &x))){ switch(msg->msg){