I'm having a problem with a Delphi application on some Windows 2003 servers. It uses a webservice call to connect with another server and transmit data back and forth. As soon as the app gets to the Authenticate method, the app dies. The app has worked for years on previous boxes with Win Server 2003, but it doesn't on freshly built machines. The machines are set up the same way for the most part, but there is clearly some config setting that differs that I'm not able to track down. Also, while the error becomes apparent in the call to Authenticate, packet sniffing proves that nothing ever happens between the app and the server it's trying to contact, which strengthens my thoughts that something is dieing early on in setting up the connection. I can't duplicate the error locally, so I can't step through the app in a debugger either. Any thoughts on why an Indy 9 Delphi web connection might silently fail?
Incompatibilities between Indy 9 and Windows Server 2003?
3.1k Views Asked by mcmar At
2
There are 2 best solutions below
Related Questions in DELPHI
- How to not load all database records in my TListbox in Firemonkey Delphi XE8
- How to catch WM_DEVICECHANGE in a control other than TForm?
- show information with Rolling / moving messages delphi xe7
- What is the different between "Console target" and "GUI target" in DCC32 option?
- How to add new online ressources to RAD Studio help system
- C# and Delphi code have different behaviour when importing unmanaged dll
- Loop through records on a cxgrid and update a field/column
- Delphi 7 - Save to a Specific .INI Files Name
- TImagelist for large images
- how to modify a function so it returns an array of strings
- Checking for internet connection in runtime
- How can I make the main form align correctly after my control height is autosized and then I maximize the form?
- fetch data from web service to dataset in Delphi
- Load candlestick data from file
- Infinite loop in parsing a string using pointer math
Related Questions in SOAP
- Java - How to send byte array on Soap Request?
- SoapClient in PHP 5.6 when using HTTPS emits warning with "key values mismatch"
- zend soap server reading xml attributes
- Multiple HTTP post requests to a web service from XML files
- Header in SOAPclient PHP
- Namespace for array field in node-soap client (Node.js)
- Generate clients for multiple WSDL files and place it in different package through Spring Gradle
- How pass XML from PHP to the Soap WCF service?
- Jira Soap Api Add Watchers
- java.lang.LinkageError: loader constraint violation when developing a SOAP plugin in JIRA
- Parsing XML with same parent and child node name
- WCF part of soap response body is signed instead of entire body
- Create signature with bouncycastle api. Key always null
- How to convert SOAP-based WCF service to RESTfull API
- Calling method from SOAP returns null
Related Questions in DELPHI-2007
- Code Gear RAD Studio Delphi 2007 can't find package error opening pas file
- What is required in Delphi 2007 to use Variant arrays?
- Does "enable runtime themes" affect performance?
- Reinstalling Rad Studio 2007
- Running ChromiumOSR Programmatically
- Delphi : Sleep without freeze and processmessages
- DELPHI - insert an empty edit row at the end of a DBgrid
- Assignment with no assignment operator compiles with no error
- Writeln followed by _WriteWChar prints a question mark
- Delphi 2007 with Indy 9
- Testing Somesite CRLF Bugs Hole Using Indy IdMappedPortTCP
- How do I use the latest Richedit with Delphi 2007?
- Cannot read status of NetBIOS
- Hide fsStayOnTop form when main form minimizes / prevent automatic restore
- Delphi 2007 & Updated Indy 10
Related Questions in DEP
- PHP oAuth Signature Invalid - Apple DEP
- Get DEP Setting
- Why is keyhelp.ocx failing in my Visual Studio C++ application?
- Can any current hardware set a RAM page to be executable but not readable?
- Interpreting Access Violation Exceptions?
- how does SEH based exploit bypass DEP and ASLR?
- Test app with Android Dynamic Features on a remote device
- Are dependencies supposed to be packaged with a maven jar artifact?
- Embarcadero Builder C++ XE5 data execution prevention compiler
- windows-xp-sp3 disable DEP but stack still can't execute
- Migrated application crashes, if DEP is active
- Github actions, problem with dep installing
- Different dependencies for different environments with dep
- Uppdating azure-sdk-for-go library dependancies
- Causing a deliberate DEP error
Related Questions in DELPHI-2005
- Web Reference Access Violation in Delphi 2005 .NET
- Delphi 2005 TPngImage or Equivalent?
- Form creates 2 Frames - How to call procedure in Frame 2 from inside Frame 1?
- CSV files treatment with Delphi
- Replacement CD delphi 2005 enterprise where to find?
- type casting to a dynamic array
- Incompatibilities between Indy 9 and Windows Server 2003?
- Installing Delphi 2005 TChart
- DELPHI: Declare HTTPRIO.OnBeforeExecute in TComponent
- rtl90.bpl was not found, how do I include it in my Delphi 2005 win 32bit app?
- Delphi unit initialization not always called
- TSQLConnection.GetFieldNames not working on 64-bit machine
- ADODB component causes access violation on Win7/Server 2008
- execute delphi web service from browser
- Why does the compiler say "Too many actual parameters" when I think I've provided the correct number?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Here's where it was blowing up:
Solution found! It turned out to be DEP (Data Execution Prevention). When I re-built our code with Delphi2007 soap libraries, the probelm went away. Since I didn't want to do that (de-serialization caused problems that made the server choke on our XML), and my mgr really didn't want to do that (involved extensive regression testing), I looked for differences between the SOAP source code between D2005 and D2007, with the idea of making a targeted change on whatever was different between the two. i.e find the difference that makes a difference. Beyond Compare was my buddy here. One change kind of stood out as being odd - the RIO.PAS now includes a new unit PrivateHeap.pas. Wondering why, I googled and found a similar problem with an explanation that seemed to be right on target.
Bingo! Now here's where it gets tricky. The DEP has always been enabled on our servers. So at first, this seemed like it wasn't likely. But DEP is tricky, and newer hardware is more capable than the older hardware. So I think we got away with DEP issues in the past, and now the newer hardware is tripping us up. Our server admin flipped DEP protection off (for 3rd-party apps), rebooted, and our old code worked! While we'll eventually move to the newer libraries, this will be a great short-term fix for us as it lets us avoid having to regression test this app that works fine otherwise.
So to summarize: Our Delphi2005 app was crashing on newly-built Windows2003 servers due to Data Execution Prevention (DEP) interfering with the creation of the HTTPRIO object. The RIO would be created without exception, appeared valid. But when the associated IInvokable object was used, it would throw an access violation, prior to attempting to communicate on the wire at all. Kudos to our cooperative and very patient admins, fellow dev Mcmar, Beyond Compare, and Jean-Marie Babet.