Winsock blocking hook problems.

From: Michael A. Wood <maw_at_iac.net>
Date: 1996/02/08
Message-ID: <4fbp6i$gb_at_cheyenne.iac.net>#1/1


I have a problem with a two types of Windows client applications not blocking on their respective network transactions.

One is a standard PowerBuilder datawindow/SQL based application that connects directly to an Oracle 7.2 database on an RS/6000 using SQL*Net 2.x. The other is a PowerBuilder client that connects to a Tuxedo BB via DCI (Tangent) & Tuxedo/WS.

I have verified that the problem does indeed have something to do with the Winsock default blocking hook function that allows Windows messages to be translated and dispatched while a send or recieve is pending.

My current line of thinking is to use WSASetBlockingHook() function to override the default function with one that removes messages from the queue. This has been somewhat successfull. For example under Windows 95 using a 16bit DLL to override the blocking hook, we have resolved the issue (at least it apears as though we have). However, under windows 3.11, the client will occasionaly go off into never never land and never complete the network transaction. BTW, this looks alot like an issue I faced on my last project using a Winsock based DLL with PowerBuilder 3.0 connecting to a Sybase 4.x RDBMS. In that situation, we did not have the non-blocking issue, we simply had what I would call network hangs. We were never able to resolve that issue, we simply managed it down to a very small number of occurances, and managed the clients expectations as best as possible.

I will say that I would have thought that a simple dbparm or connect string option would instruct the native Oracle driver/SQL*Net to install its own blocking hook that would avoid the problem. If you know of such a option, please let me know.

If you have any thoughts the Windows 3.11 issue or the approach in general, please either post a follow up or send me email directly.

Many thanks.

Mike Wood
maw_at_iac.net Received on Thu Feb 08 1996 - 00:00:00 CET

Original text of this message