<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[Atozed Forums - Indy]]></title>
		<link>https://www.atozed.com/forums/</link>
		<description><![CDATA[Atozed Forums - https://www.atozed.com/forums]]></description>
		<pubDate>Tue, 16 Jun 2026 05:42:49 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[TIDFTP sending short files goes to timeout]]></title>
			<link>https://www.atozed.com/forums/thread-5749.html</link>
			<pubDate>Wed, 14 Jan 2026 12:40:48 -0500</pubDate>
			<dc:creator><![CDATA[<a href="https://www.atozed.com/forums/member.php?action=profile&uid=61880">Dany40</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.atozed.com/forums/thread-5749.html</guid>
			<description><![CDATA[Hi;<br />
<br />
I use a TIDFTP client in a RadStudio 10.4 project that connects to a FileZilla Server for sending thoudands of little files (1kb to 4 or 5 MB). The client is set to send in pasive mode and bynari mode, using PUT:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>Ftp.Put(sSoruceFile, sTargetFile, False, -1);</code></div></div><br />
In the very big number of files it sends every week, 3 or 4 different and small files (2 kb in size) appeared that could not be transferred to that server; FileZilla is receiving them, sure in only one package as those files are very little in size; but after the client reaches the 60 seconds timeout, the Put raises a read error. When I see at the server side, the file only have 1300 bytes, when the original file is 2406 bytes.<br />
<br />
Using one of the files that fails, I can reproduce the same 100% of the times I try. I attached here a test file.<br />
<br />
FileZilla server is 1.12.1 version, and it is running on a Windows 11 PRO virtual machine and behind a NAT.<br />
<br />
Thank you in advanced for any idea or clue I can follow!]]></description>
			<content:encoded><![CDATA[Hi;<br />
<br />
I use a TIDFTP client in a RadStudio 10.4 project that connects to a FileZilla Server for sending thoudands of little files (1kb to 4 or 5 MB). The client is set to send in pasive mode and bynari mode, using PUT:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>Ftp.Put(sSoruceFile, sTargetFile, False, -1);</code></div></div><br />
In the very big number of files it sends every week, 3 or 4 different and small files (2 kb in size) appeared that could not be transferred to that server; FileZilla is receiving them, sure in only one package as those files are very little in size; but after the client reaches the 60 seconds timeout, the Put raises a read error. When I see at the server side, the file only have 1300 bytes, when the original file is 2406 bytes.<br />
<br />
Using one of the files that fails, I can reproduce the same 100% of the times I try. I attached here a test file.<br />
<br />
FileZilla server is 1.12.1 version, and it is running on a Windows 11 PRO virtual machine and behind a NAT.<br />
<br />
Thank you in advanced for any idea or clue I can follow!]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Indy for Lazarus and SSL v3.x]]></title>
			<link>https://www.atozed.com/forums/thread-5629.html</link>
			<pubDate>Sun, 07 Dec 2025 01:53:49 -0500</pubDate>
			<dc:creator><![CDATA[<a href="https://www.atozed.com/forums/member.php?action=profile&uid=55177">dpapdpap</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.atozed.com/forums/thread-5629.html</guid>
			<description><![CDATA[Hi, I use lazarus 4.4/64bit for windows11. My app needs to make HTTPs calls but i faced this problem. If I use the SSL binaries v3.x idHTTP can't recognize them. I adviced to use v1.1 but I can't find them. At the <a href="https://github.com/IndySockets/OpenSSL-Binaries" target="_blank" rel="noopener" class="mycode_url">https://github.com/IndySockets/OpenSSL-Binaries</a> are only v1.0 and v3.x.  <br />
My question is: is There a working link from where I could download precompiled binaries that work with indy10 at Lazarus64/win or is there another way to make indy able to make SSL calls?<br />
Thanls in advance]]></description>
			<content:encoded><![CDATA[Hi, I use lazarus 4.4/64bit for windows11. My app needs to make HTTPs calls but i faced this problem. If I use the SSL binaries v3.x idHTTP can't recognize them. I adviced to use v1.1 but I can't find them. At the <a href="https://github.com/IndySockets/OpenSSL-Binaries" target="_blank" rel="noopener" class="mycode_url">https://github.com/IndySockets/OpenSSL-Binaries</a> are only v1.0 and v3.x.  <br />
My question is: is There a working link from where I could download precompiled binaries that work with indy10 at Lazarus64/win or is there another way to make indy able to make SSL calls?<br />
Thanls in advance]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[TIdTCPServer with many concurrent connections]]></title>
			<link>https://www.atozed.com/forums/thread-5413.html</link>
			<pubDate>Wed, 10 Sep 2025 17:29:12 -0400</pubDate>
			<dc:creator><![CDATA[<a href="https://www.atozed.com/forums/member.php?action=profile&uid=43729">vince99</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.atozed.com/forums/thread-5413.html</guid>
			<description><![CDATA[Hello,<br />
<br />
I have a TIdTcpServer project with many clients that have permanent connections.  At the moment I am having 2300 concurrent connections (=2300 threads) all the time and I am running into performance problems.  The machine I am running the server application on is a Windows Server 2019 with 8 cores and 24 GB of RAM.  <br />
I suspect the application starts running slow because of the thread scheduling of the operating system.<br />
<br />
I have been reading about the IdSchedulerOfThreadPool that would use a thread pool instead of 1 thread per connection, but I also read something that contradicts that a  IdSchedulerOfThreadPool would help.<br />
<br />
What is the best I can do to handle that many concurrent connections?<br />
<br />
Vincent]]></description>
			<content:encoded><![CDATA[Hello,<br />
<br />
I have a TIdTcpServer project with many clients that have permanent connections.  At the moment I am having 2300 concurrent connections (=2300 threads) all the time and I am running into performance problems.  The machine I am running the server application on is a Windows Server 2019 with 8 cores and 24 GB of RAM.  <br />
I suspect the application starts running slow because of the thread scheduling of the operating system.<br />
<br />
I have been reading about the IdSchedulerOfThreadPool that would use a thread pool instead of 1 thread per connection, but I also read something that contradicts that a  IdSchedulerOfThreadPool would help.<br />
<br />
What is the best I can do to handle that many concurrent connections?<br />
<br />
Vincent]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Documentations Link doesn`t work]]></title>
			<link>https://www.atozed.com/forums/thread-5402.html</link>
			<pubDate>Thu, 04 Sep 2025 07:20:39 -0400</pubDate>
			<dc:creator><![CDATA[<a href="https://www.atozed.com/forums/member.php?action=profile&uid=43152">Andy Night</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.atozed.com/forums/thread-5402.html</guid>
			<description><![CDATA[Hi,<br />
all links in the Website of Indy doesn`t work. Is there a Bug? <a href="https://www.indyproject.org/documentation/" target="_blank" rel="noopener" class="mycode_url">https://www.indyproject.org/documentation/</a><br />
Thanks <img src="https://www.atozed.com/forums/images/smilies/biggrin.png" alt="Big Grin" title="Big Grin" class="smilie smilie_4" />]]></description>
			<content:encoded><![CDATA[Hi,<br />
all links in the Website of Indy doesn`t work. Is there a Bug? <a href="https://www.indyproject.org/documentation/" target="_blank" rel="noopener" class="mycode_url">https://www.indyproject.org/documentation/</a><br />
Thanks <img src="https://www.atozed.com/forums/images/smilies/biggrin.png" alt="Big Grin" title="Big Grin" class="smilie smilie_4" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[New Google Security Requirements for smtp access]]></title>
			<link>https://www.atozed.com/forums/thread-5039.html</link>
			<pubDate>Tue, 25 Feb 2025 13:28:20 -0500</pubDate>
			<dc:creator><![CDATA[<a href="https://www.atozed.com/forums/member.php?action=profile&uid=585">OldBob1938</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.atozed.com/forums/thread-5039.html</guid>
			<description><![CDATA[I don't know if this is the correct place to ask this question.  Have tried google but only get answers that don't answer my question.<br />
<br />
I am using TidSMTP version 10.6.2.  I have 3 apps that run daily by themselves to perform specific tasks and to report the results of the tasks.  I don't understand google's requirement that accounts with app passwords must have 2 step verification.  How can this work for automatic tasks?  Also, don't understand the requirements for OAuth 2 starting next month.  <br />
<br />
Am out of my depth here and any pointers will be appreciated]]></description>
			<content:encoded><![CDATA[I don't know if this is the correct place to ask this question.  Have tried google but only get answers that don't answer my question.<br />
<br />
I am using TidSMTP version 10.6.2.  I have 3 apps that run daily by themselves to perform specific tasks and to report the results of the tasks.  I don't understand google's requirement that accounts with app passwords must have 2 step verification.  How can this work for automatic tasks?  Also, don't understand the requirements for OAuth 2 starting next month.  <br />
<br />
Am out of my depth here and any pointers will be appreciated]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[TIdTCPServer connection limits?]]></title>
			<link>https://www.atozed.com/forums/thread-4930.html</link>
			<pubDate>Sun, 26 Jan 2025 15:43:52 -0500</pubDate>
			<dc:creator><![CDATA[<a href="https://www.atozed.com/forums/member.php?action=profile&uid=9628">Justin Case</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.atozed.com/forums/thread-4930.html</guid>
			<description><![CDATA[Hello,<br />
<br />
So my server is working with quite a complex ACL that allows user groups and permissions to be changed for users in real time without logging off and back on again. The good old 'Apply' button has it's uses but not in something where I may need to restrict something fast..<br />
<br />
Anyhow, when running on my Win7 Pro box (2x 4core proccys at 3GHz, 16GB ram) it maxes out with 93 clients connected. After that, i can launch new clients but they fail to connect (or at least if they do connect, they do it fast and disconnect without me noticing).<br />
<br />
At this point, the server memory according to task manager is: 137,668K - which doesn't seem a lot when some instances of chrome can use far more than that!<br />
<br />
I'm using Delphi 6 (32bit obviously).<br />
<br />
Any ideas where i start with this?<br />
<br />
Thanks]]></description>
			<content:encoded><![CDATA[Hello,<br />
<br />
So my server is working with quite a complex ACL that allows user groups and permissions to be changed for users in real time without logging off and back on again. The good old 'Apply' button has it's uses but not in something where I may need to restrict something fast..<br />
<br />
Anyhow, when running on my Win7 Pro box (2x 4core proccys at 3GHz, 16GB ram) it maxes out with 93 clients connected. After that, i can launch new clients but they fail to connect (or at least if they do connect, they do it fast and disconnect without me noticing).<br />
<br />
At this point, the server memory according to task manager is: 137,668K - which doesn't seem a lot when some instances of chrome can use far more than that!<br />
<br />
I'm using Delphi 6 (32bit obviously).<br />
<br />
Any ideas where i start with this?<br />
<br />
Thanks]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[TIdTCP(CMD)Server bindings]]></title>
			<link>https://www.atozed.com/forums/thread-4788.html</link>
			<pubDate>Fri, 13 Dec 2024 17:44:28 -0500</pubDate>
			<dc:creator><![CDATA[<a href="https://www.atozed.com/forums/member.php?action=profile&uid=9628">Justin Case</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.atozed.com/forums/thread-4788.html</guid>
			<description><![CDATA[<div style="text-align: left;" class="mycode_align">I have a hunch I already know the answer to this..<br />
<br />
Is there a way to change the bindings while the server is running?<br />
<br />
I'd like to be able to send a command to my server and have it bind to another port and accept a connection there - but only when instructed to do so. After use, I'd like that binding to vanish and it stop listening there.<br />
<br />
I know the bindings are usually taken care off in the Active property but can it be managed outside of this?</div>]]></description>
			<content:encoded><![CDATA[<div style="text-align: left;" class="mycode_align">I have a hunch I already know the answer to this..<br />
<br />
Is there a way to change the bindings while the server is running?<br />
<br />
I'd like to be able to send a command to my server and have it bind to another port and accept a connection there - but only when instructed to do so. After use, I'd like that binding to vanish and it stop listening there.<br />
<br />
I know the bindings are usually taken care off in the Active property but can it be managed outside of this?</div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[UDP Broadcast across VLANs]]></title>
			<link>https://www.atozed.com/forums/thread-4757.html</link>
			<pubDate>Thu, 05 Dec 2024 04:21:23 -0500</pubDate>
			<dc:creator><![CDATA[<a href="https://www.atozed.com/forums/member.php?action=profile&uid=1810">Ahmed Sayed</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.atozed.com/forums/thread-4757.html</guid>
			<description><![CDATA[Hi,<br />
I have a server app that needs to know if there are other instances of the same server app running on the same VLAN or different VLANs.<br />
<br />
When I try using the Broadcast function in the UDP client/server and using the IP address "255.255.255.255," it only sends the message to the current VLAN and local machine. But when I use that VLAN IP address something like "192.168.5.255" it does broadcast the message to all the servers that listen to the port I defined. <br />
<br />
I already have a way in mind which is to force the user to add a list of VLANs in a config file, but let's say they forget or make a mistake I want this to be more automatic so that the Master server can discover the other VLANs on the network on its own. Also, I don't want to loop all possible IP numbers from 0 to 255 just to discover if there is a possibility that this IP is in fact a VLAN or not.<br />
<br />
Does Indy have anything to help me with this, or maybe broadcast the message to the whole network across VLANs?]]></description>
			<content:encoded><![CDATA[Hi,<br />
I have a server app that needs to know if there are other instances of the same server app running on the same VLAN or different VLANs.<br />
<br />
When I try using the Broadcast function in the UDP client/server and using the IP address "255.255.255.255," it only sends the message to the current VLAN and local machine. But when I use that VLAN IP address something like "192.168.5.255" it does broadcast the message to all the servers that listen to the port I defined. <br />
<br />
I already have a way in mind which is to force the user to add a list of VLANs in a config file, but let's say they forget or make a mistake I want this to be more automatic so that the Master server can discover the other VLANs on the network on its own. Also, I don't want to loop all possible IP numbers from 0 to 255 just to discover if there is a possibility that this IP is in fact a VLAN or not.<br />
<br />
Does Indy have anything to help me with this, or maybe broadcast the message to the whole network across VLANs?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[TIdTCPServer - Reading TCP option values from Header packet]]></title>
			<link>https://www.atozed.com/forums/thread-4711.html</link>
			<pubDate>Thu, 21 Nov 2024 16:18:57 -0500</pubDate>
			<dc:creator><![CDATA[<a href="https://www.atozed.com/forums/member.php?action=profile&uid=17390">philip.joseph</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.atozed.com/forums/thread-4711.html</guid>
			<description><![CDATA[We have a requirement to read TCP option header values from TIdTCPServer component on any new TCP client connection to extract the client IP address from the header value (packet 1) originally inserted by the load balancer. How can we read this value from the header on any client connection?]]></description>
			<content:encoded><![CDATA[We have a requirement to read TCP option header values from TIdTCPServer component on any new TCP client connection to extract the client IP address from the header value (packet 1) originally inserted by the load balancer. How can we read this value from the header on any client connection?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[IOHandler.ReadTimeout]]></title>
			<link>https://www.atozed.com/forums/thread-4695.html</link>
			<pubDate>Sun, 17 Nov 2024 20:12:18 -0500</pubDate>
			<dc:creator><![CDATA[<a href="https://www.atozed.com/forums/member.php?action=profile&uid=123">BartKindt</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.atozed.com/forums/thread-4695.html</guid>
			<description><![CDATA[By default the (Client) IOHandler.ReadTimeout is set to -1.<br />
<br />
What does this mean if it is not changed?  Is it internally setting another default, or wil it not time out at all, and keep waiting?<br />
<br />
I have a situation where a ReadTimeout occurs all the time with the default settings, and the Client loops. I have no idea after how much time it actually times out.<br />
<br />
Bart]]></description>
			<content:encoded><![CDATA[By default the (Client) IOHandler.ReadTimeout is set to -1.<br />
<br />
What does this mean if it is not changed?  Is it internally setting another default, or wil it not time out at all, and keep waiting?<br />
<br />
I have a situation where a ReadTimeout occurs all the time with the default settings, and the Client loops. I have no idea after how much time it actually times out.<br />
<br />
Bart]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[NTLM Support for TidSMTP]]></title>
			<link>https://www.atozed.com/forums/thread-4658.html</link>
			<pubDate>Sun, 10 Nov 2024 15:05:09 -0500</pubDate>
			<dc:creator><![CDATA[<a href="https://www.atozed.com/forums/member.php?action=profile&uid=16329">Matt G</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.atozed.com/forums/thread-4658.html</guid>
			<description><![CDATA[Is this something that is currently supported, downloaded the latest source after coming across AV's with this SASL processing and it looks like this is not enabled?<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>AV was with this line: setup_des_key(PDES_cblock(Integer(Akeys) + 7)^, ks);</code></div></div><br />
<br />
Is there any information on NTLM support now or is that gone?<br />
<br />
Looks like IdFIPS.pas disables NTLM by default now:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>function DefLoadNTLMLibrary: Boolean;<br />
begin<br />
  Result := False;<br />
end;</code></div></div><br />
<br />
<br />
Thanks<br />
Matt]]></description>
			<content:encoded><![CDATA[Is this something that is currently supported, downloaded the latest source after coming across AV's with this SASL processing and it looks like this is not enabled?<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>AV was with this line: setup_des_key(PDES_cblock(Integer(Akeys) + 7)^, ks);</code></div></div><br />
<br />
Is there any information on NTLM support now or is that gone?<br />
<br />
Looks like IdFIPS.pas disables NTLM by default now:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>function DefLoadNTLMLibrary: Boolean;<br />
begin<br />
  Result := False;<br />
end;</code></div></div><br />
<br />
<br />
Thanks<br />
Matt]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Encoding problem?]]></title>
			<link>https://www.atozed.com/forums/thread-4626.html</link>
			<pubDate>Sun, 27 Oct 2024 16:27:42 -0400</pubDate>
			<dc:creator><![CDATA[<a href="https://www.atozed.com/forums/member.php?action=profile&uid=9628">Justin Case</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.atozed.com/forums/thread-4626.html</guid>
			<description><![CDATA[My Client is failing to logon to my server now and I think this is an upgrade woe (I'm using 10.6.3.3)<br />
<br />
The client sends a string command like this: logon¦&lt;username&gt;¦password<br />
<br />
After being stumped as to it not working anymore, I ended up doing a debug and seeing that the clients TCP thread is sending it but the server isn't happy - and sends back a 400 quoting it with ? instead of ¦<br />
<br />
So I went and debugged the server and the TIdCmdTCPServer.DoExecute function is reading it in as: <span style="color: #333333;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: Tahoma, Verdana, Arial, sans-serif;" class="mycode_font">logon?&lt;username&gt;?password</span></span></span><br />
<br />
<span style="color: #333333;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: Tahoma, Verdana, Arial, sans-serif;" class="mycode_font">Clearly this is not what was sent however ¦ is turning into ?</span></span></span><br />
<br />
<span style="color: #333333;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: Tahoma, Verdana, Arial, sans-serif;" class="mycode_font">In IdGlobal there is this function that the client calls when calling WriteLn():</span></span></span><br />
<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>function ToBytes(const AValue: string; const ALength: Integer; const AIndex: Integer = 1;<br />
  ADestEncoding: IIdTextEncoding = nil<br />
  {&#36;IFDEF STRING_IS_ANSI}; ASrcEncoding: IIdTextEncoding = nil{&#36;ENDIF}<br />
  ): TIdBytes; overload;<br />
var<br />
  LLength: Integer;<br />
  {&#36;IFDEF STRING_IS_ANSI}<br />
  LBytes: TIdBytes;<br />
  {&#36;ENDIF}<br />
begin<br />
  {&#36;IFDEF STRING_IS_ANSI}<br />
  LBytes := nil; // keep the compiler happy<br />
  {&#36;ENDIF}<br />
  LLength := IndyLength(AValue, ALength, AIndex);<br />
  if LLength &gt; 0 then<br />
  begin<br />
    EnsureEncoding(ADestEncoding);<br />
    {&#36;IFDEF STRING_IS_UNICODE}<br />
    SetLength(Result, ADestEncoding.GetByteCount(AValue, AIndex, LLength));<br />
    if Length(Result) &gt; 0 then begin<br />
      ADestEncoding.GetBytes(AValue, AIndex, LLength, Result, 0);<br />
    end;<br />
    {&#36;ELSE}<br />
    EnsureEncoding(ASrcEncoding, encOSDefault);<br />
    LBytes := RawToBytes(AValue[AIndex], LLength);<br />
<br />
//LBytes is: (76, 111, 103, 111, 110, 166, 83, 97, 102, 102, 108, 101, 115, 166, 104, 111, 114, 97, 99, 101, 13, 10)<br />
<br />
    CheckByteEncoding(LBytes, ASrcEncoding, ADestEncoding);<br />
<br />
//LBytes is: (76, 111, 103, 111, 110, 63, 83, 97, 102, 102, 108, 101, 115, 63, 104, 111, 114, 97, 99, 101, 13, 10)<br />
<br />
    Result := LBytes;<br />
    {&#36;ENDIF}<br />
  end else begin<br />
    SetLength(Result, 0);<br />
  end;<br />
end;</code></div></div><br />
<span style="color: #333333;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: Tahoma, Verdana, Arial, sans-serif;" class="mycode_font">As you can see the bytes 166 are transformed into bytes 63. This never used to happen. Why does it happen now?</span></span></span><br />
<br />
This seems to be triggered here:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>function TIdASCIIEncoding.GetBytes(const AChars: PIdWideChar; ACharCount: Integer;<br />
  ABytes: PByte; AByteCount: Integer): Integer;<br />
var<br />
  P: PIdWideChar;<br />
  i : Integer;<br />
begin<br />
  // TODO: decode UTF-16 surrogates...<br />
  P := AChars;<br />
  Result := IndyMin(ACharCount, AByteCount);<br />
  for i := 1 to Result do begin<br />
    // replace illegal characters &gt; &#36;7F<br />
    if UInt16(P^) &gt; &#36;007F then begin<br />
<br />
//This next line seems to do it<br />
      ABytes^ := Byte(Ord('?'));<br />
<br />
    end else begin<br />
      ABytes^ := Byte(P^);<br />
    end;<br />
    //advance to next char<br />
    Inc(P);<br />
    Inc(ABytes);<br />
  end;<br />
end;</code></div></div><br />
<br />
<span style="color: #333333;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: Tahoma, Verdana, Arial, sans-serif;" class="mycode_font">Any ideas please?</span></span></span><br />
<br />
<span style="color: #333333;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: Tahoma, Verdana, Arial, sans-serif;" class="mycode_font">Thanks</span></span></span>]]></description>
			<content:encoded><![CDATA[My Client is failing to logon to my server now and I think this is an upgrade woe (I'm using 10.6.3.3)<br />
<br />
The client sends a string command like this: logon¦&lt;username&gt;¦password<br />
<br />
After being stumped as to it not working anymore, I ended up doing a debug and seeing that the clients TCP thread is sending it but the server isn't happy - and sends back a 400 quoting it with ? instead of ¦<br />
<br />
So I went and debugged the server and the TIdCmdTCPServer.DoExecute function is reading it in as: <span style="color: #333333;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: Tahoma, Verdana, Arial, sans-serif;" class="mycode_font">logon?&lt;username&gt;?password</span></span></span><br />
<br />
<span style="color: #333333;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: Tahoma, Verdana, Arial, sans-serif;" class="mycode_font">Clearly this is not what was sent however ¦ is turning into ?</span></span></span><br />
<br />
<span style="color: #333333;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: Tahoma, Verdana, Arial, sans-serif;" class="mycode_font">In IdGlobal there is this function that the client calls when calling WriteLn():</span></span></span><br />
<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>function ToBytes(const AValue: string; const ALength: Integer; const AIndex: Integer = 1;<br />
  ADestEncoding: IIdTextEncoding = nil<br />
  {&#36;IFDEF STRING_IS_ANSI}; ASrcEncoding: IIdTextEncoding = nil{&#36;ENDIF}<br />
  ): TIdBytes; overload;<br />
var<br />
  LLength: Integer;<br />
  {&#36;IFDEF STRING_IS_ANSI}<br />
  LBytes: TIdBytes;<br />
  {&#36;ENDIF}<br />
begin<br />
  {&#36;IFDEF STRING_IS_ANSI}<br />
  LBytes := nil; // keep the compiler happy<br />
  {&#36;ENDIF}<br />
  LLength := IndyLength(AValue, ALength, AIndex);<br />
  if LLength &gt; 0 then<br />
  begin<br />
    EnsureEncoding(ADestEncoding);<br />
    {&#36;IFDEF STRING_IS_UNICODE}<br />
    SetLength(Result, ADestEncoding.GetByteCount(AValue, AIndex, LLength));<br />
    if Length(Result) &gt; 0 then begin<br />
      ADestEncoding.GetBytes(AValue, AIndex, LLength, Result, 0);<br />
    end;<br />
    {&#36;ELSE}<br />
    EnsureEncoding(ASrcEncoding, encOSDefault);<br />
    LBytes := RawToBytes(AValue[AIndex], LLength);<br />
<br />
//LBytes is: (76, 111, 103, 111, 110, 166, 83, 97, 102, 102, 108, 101, 115, 166, 104, 111, 114, 97, 99, 101, 13, 10)<br />
<br />
    CheckByteEncoding(LBytes, ASrcEncoding, ADestEncoding);<br />
<br />
//LBytes is: (76, 111, 103, 111, 110, 63, 83, 97, 102, 102, 108, 101, 115, 63, 104, 111, 114, 97, 99, 101, 13, 10)<br />
<br />
    Result := LBytes;<br />
    {&#36;ENDIF}<br />
  end else begin<br />
    SetLength(Result, 0);<br />
  end;<br />
end;</code></div></div><br />
<span style="color: #333333;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: Tahoma, Verdana, Arial, sans-serif;" class="mycode_font">As you can see the bytes 166 are transformed into bytes 63. This never used to happen. Why does it happen now?</span></span></span><br />
<br />
This seems to be triggered here:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>function TIdASCIIEncoding.GetBytes(const AChars: PIdWideChar; ACharCount: Integer;<br />
  ABytes: PByte; AByteCount: Integer): Integer;<br />
var<br />
  P: PIdWideChar;<br />
  i : Integer;<br />
begin<br />
  // TODO: decode UTF-16 surrogates...<br />
  P := AChars;<br />
  Result := IndyMin(ACharCount, AByteCount);<br />
  for i := 1 to Result do begin<br />
    // replace illegal characters &gt; &#36;7F<br />
    if UInt16(P^) &gt; &#36;007F then begin<br />
<br />
//This next line seems to do it<br />
      ABytes^ := Byte(Ord('?'));<br />
<br />
    end else begin<br />
      ABytes^ := Byte(P^);<br />
    end;<br />
    //advance to next char<br />
    Inc(P);<br />
    Inc(ABytes);<br />
  end;<br />
end;</code></div></div><br />
<br />
<span style="color: #333333;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: Tahoma, Verdana, Arial, sans-serif;" class="mycode_font">Any ideas please?</span></span></span><br />
<br />
<span style="color: #333333;" class="mycode_color"><span style="font-size: small;" class="mycode_size"><span style="font-family: Tahoma, Verdana, Arial, sans-serif;" class="mycode_font">Thanks</span></span></span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Bug with TIdMessageBuilderHtml and TIdAttachmentFile]]></title>
			<link>https://www.atozed.com/forums/thread-4625.html</link>
			<pubDate>Sun, 27 Oct 2024 15:08:13 -0400</pubDate>
			<dc:creator><![CDATA[<a href="https://www.atozed.com/forums/member.php?action=profile&uid=123">BartKindt</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.atozed.com/forums/thread-4625.html</guid>
			<description><![CDATA[I run into a real problem here.<br />
<br />
I have just found out that when I create an HTML email using TIdMessageBuilderHtml and also want to attach a file using TIdAttachmentFile, the file attachment fails.<br />
<br />
It does not make a difference in which order I do it.<br />
Is there anything I can do to fix it?<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>with TIdMessageBuilderHtml.Create do<br />
    try<br />
      PlainText.Text := PlainBody;<br />
      Html.Text := HTMLBody;<br />
      FillMessage(IdMessage);<br />
    finally<br />
      Free;<br />
    end;<br />
<br />
TIdAttachmentFile.Create(IdMessage.MessageParts, AAttachment); <br />
idMessage.SaveToFile('msg.eml');</code></div></div><br />
When opening the saved file, no attachments. Obviousely also when I actually send it with SMTP.]]></description>
			<content:encoded><![CDATA[I run into a real problem here.<br />
<br />
I have just found out that when I create an HTML email using TIdMessageBuilderHtml and also want to attach a file using TIdAttachmentFile, the file attachment fails.<br />
<br />
It does not make a difference in which order I do it.<br />
Is there anything I can do to fix it?<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>with TIdMessageBuilderHtml.Create do<br />
    try<br />
      PlainText.Text := PlainBody;<br />
      Html.Text := HTMLBody;<br />
      FillMessage(IdMessage);<br />
    finally<br />
      Free;<br />
    end;<br />
<br />
TIdAttachmentFile.Create(IdMessage.MessageParts, AAttachment); <br />
idMessage.SaveToFile('msg.eml');</code></div></div><br />
When opening the saved file, no attachments. Obviousely also when I actually send it with SMTP.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Contexts AThread?]]></title>
			<link>https://www.atozed.com/forums/thread-4624.html</link>
			<pubDate>Sat, 26 Oct 2024 17:01:32 -0400</pubDate>
			<dc:creator><![CDATA[<a href="https://www.atozed.com/forums/member.php?action=profile&uid=9628">Justin Case</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.atozed.com/forums/thread-4624.html</guid>
			<description><![CDATA[Just a quickie.. Indy 10.6.3.3..<br />
<br />
Is there a way to access the AThread of TIdContext?<br />
<br />
I've been unable to find it..<br />
<br />
Thanks<br />
<br />
JC]]></description>
			<content:encoded><![CDATA[Just a quickie.. Indy 10.6.3.3..<br />
<br />
Is there a way to access the AThread of TIdContext?<br />
<br />
I've been unable to find it..<br />
<br />
Thanks<br />
<br />
JC]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Context.Connection.Socket.WriteInteger() not available?]]></title>
			<link>https://www.atozed.com/forums/thread-4611.html</link>
			<pubDate>Wed, 23 Oct 2024 16:00:28 -0400</pubDate>
			<dc:creator><![CDATA[<a href="https://www.atozed.com/forums/member.php?action=profile&uid=9628">Justin Case</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.atozed.com/forums/thread-4611.html</guid>
			<description><![CDATA[On the old version of Indy 10, I noticed that WriteInteger wasn't available - a bit of a pain when i was trying to send file sizes before sending files!<br />
<br />
On this version (10.6.3.3) there is still no WriteInteger() procedure available yet it was in Indy 9 (and 8 I think too).<br />
<br />
How can I get around this please?<br />
<br />
Thanks]]></description>
			<content:encoded><![CDATA[On the old version of Indy 10, I noticed that WriteInteger wasn't available - a bit of a pain when i was trying to send file sizes before sending files!<br />
<br />
On this version (10.6.3.3) there is still no WriteInteger() procedure available yet it was in Indy 9 (and 8 I think too).<br />
<br />
How can I get around this please?<br />
<br />
Thanks]]></content:encoded>
		</item>
	</channel>
</rss>