Re: [Bug Report] Missing Winsock initialization in v0.82
"James K. Lowden" <[email protected]>
| Newsgroups | gmane.comp.db.tds.freetds |
|---|---|
| Message-ID | <[email protected]> |
Paul Thurston wrote: > > I reported this bug in the v0.82 last year (May 2009). Would someone > please patch this, or provide me with CVS access ( and I'll do it)? Hi Paul, I want to alleviate some confusion and welcome your participation. If, unlike me, you care about the Win32 builds and have a continuing need to keep them working, I will absolutely give you CVS access. It's true that the Win32/64 build is a something of a stepchild. After all, the vendors provided Windows libraries. But it's no secret that DB-Library is not their priority, witness the the lack of a new version is ~10 years. FreeTDS is arguably the best DB-Library implementation currently available (even if that's not saying much). Windows and I go way back. I attended the first conference in New York, in 1985. I have the manuals for 1.0.3. I remember the excitement over Daytona and Cairo, and the dismay at moving the video driver into the kernel. More recently I had need for a 64-bit db-lib, and got FreeTDS working there in a few days. I also added the Nmakefile and a bunch of Win64 fixes at that time. The challenge -- one I don't take up -- for anyone trying to support an open-source Windows library is to cope with the ever-changing standards-free rules. dsw or sln? strcpy(3) or _CRT_SECURE_NO_WARNINGS? WIN32_LEAN_AND_MEAN? There's more Win32 gadgetry in FreeTDS than for any other OS, and it's very fragile because it's impossible to interrogate the system about its requirements, let alone foresee what Microsoft will do next. Your original patch wasn't applied because IMHO it's not right. It initializes the Winsock library before every connection; the documentation says that should be done only once, which is what CVS HEAD does. The documentation does not say what happens if WSAStartup() is called twice. Even if it works (or seems to), I'd rather not try. fake_poll() is mine. The idea is to remove any call to select(2) in the main code, and always call poll(2) even if it's the fake one. HAVE_POLL will disappear. If that's not working for you, let's make it work. (It worked for me with Win32/64 and VS 2005. I use the Nmakefile, though.) My priority is the next release, not 0.82. I can see Frediano rolling his eyes, because he's been waiting for a long time. If you want to patch up 0.82, that's fine with me, but I want to encourage you to think of CVS HEAD as the latest version. It will be, just as soon as I finish the documentation. Regards, --jkl