# TCL errors

**URL:** <https://community.f5.com/t/tcl-errors/73966>\
**Category:** Technical Forums\
**Tags:** application-delivery\
**Created:** [February 9, 2024, 12:17am UTC](https://community.f5.com/t/tcl-errors/73966 "2024-02-09T00:17:11Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![adick](https://avatars.discourse-cdn.com/v4/letter/a/4af34b/32.png) [@adick](https://community.f5.com/u/adick)\
**Post date:** [February 9, 2024, 12:17am UTC](https://community.f5.com/t/tcl-errors/73966/1 "2024-02-09T00:17:11Z")

</div>

Hey Team,

We are experiencing some TCL errors with one of our iRules.

I didn’t build the iRule, but have inherited it from a past engineer, so I don’t have a ton of knowledge on the specifics, but I’m wondering if it is something we can discover a fix for:

Error:

partition1/F5\_L4\_TCP\_IPFIX

Feb &nbsp;8 13:52:18 [DN-DC3-LTM-02.domainname.com](http://DN-DC3-LTM-02.domainname.com) err tmm5[13713]: 01220001:3: TCL error: /partition1/F5\_L4\_TCP\_IPFIX \<CLIENT\_CLOSED\> - can’t read “rule1\_msg1”: no such variable &nbsp; &nbsp; while executing “IPFIX::msg set $rule1\_msg1 postOctetTotalCount [IP::stats bytes in]”  
Feb &nbsp;8 13:52:19 [DN-DC3-LTM-02.domainname.com](http://DN-DC3-LTM-02.domainname.com) err tmm4[13713]: 01220001:3: TCL error: /partition1/F5\_L4\_TCP\_IPFIX \<SERVER\_CLOSED\> - can’t read “rule1\_msg1”: no such variable &nbsp; &nbsp; while executing “IPFIX::msg set $rule1\_msg1 octetTotalCount [IP::stats bytes out]”  
Feb &nbsp;8 13:52:19 [DN-DC3-LTM-02.domainname.com](http://DN-DC3-LTM-02.domainname.com) err tmm4[13713]: 01220001:3: TCL error: /partition1/F5\_L4\_TCP\_IPFIX \<CLIENT\_CLOSED\> - can’t read “rule1\_msg1”: no such variable &nbsp; &nbsp; while executing “IPFIX::msg set $rule1\_msg1 postOctetTotalCount [IP::stats bytes in]”  
Feb &nbsp;8 13:52:19 [DN-DC3-LTM-02.domainname.com](http://DN-DC3-LTM-02.domainname.com) err tmm5[13713]: 01220001:3: TCL error: /partition1/F5\_L4\_TCP\_IPFIX \<SERVER\_CLOSED\> - can’t read “rule1\_msg1”: no such variable &nbsp; &nbsp; while executing “IPFIX::msg set $rule1\_msg1 octetTotalCount [IP::stats bytes out]”  
Feb &nbsp;8 13:52:19 [DN-DC3-LTM-02.domainname.com](http://DN-DC3-LTM-02.domainname.com) err tmm5[13713]: 01220001:3: TCL error: /partition1/F5\_L4\_TCP\_IPFIX \<CLIENT\_CLOSED\> - can’t read “rule1\_msg1”: no such variable &nbsp; &nbsp; while executing “IPFIX::msg set $rule1\_msg1 postOctetTotalCount [IP::stats bytes in]”  
Feb &nbsp;8 13:52:20 [DN-DC3-LTM-02.domainname.com](http://DN-DC3-LTM-02.domainname.com) err tmm3[13713]: 01220001:3: TCL error: /partition1/F5\_L4\_TCP\_IPFIX \<SERVER\_CLOSED\> - can’t read “rule1\_msg1”: no such variable &nbsp; &nbsp; while executing “IPFIX::msg set $rule1\_msg1 octetTotalCount [IP::stats bytes out]”  
Feb &nbsp;8 13:52:20 [DN-DC3-LTM-02.domainname.com](http://DN-DC3-LTM-02.domainname.com) err tmm3[13713]: 01220001:3: TCL error: /partition1/F5\_L4\_TCP\_IPFIX \<CLIENT\_CLOSED\> - can’t read “rule1\_msg1”: no such variable &nbsp; &nbsp; while executing “IPFIX::msg set $rule1\_msg1 postOctetTotalCount [IP::stats bytes in]”  
[user@DN-DC3-LTM-02:Active:In Sync] log #  
[user@DN-DC3-LTM-02:Active:In Sync] log #

IRULE:

when RULE\_INIT {&nbsp; set static::http\_rule1\_dest “”&nbsp; set static::http\_rule1\_tmplt “”}&nbsp;&nbsp;# CLIENT\_ACCEPTED event to initiate IPFIX destination and templatewhen CLIENT\_ACCEPTED {&nbsp; set start [clock clicks -milliseconds]&nbsp; if { $static::http\_rule1\_dest == “”} {&nbsp; &nbsp; # open the logging destination if it has not been opened yet&nbsp; &nbsp; set static::http\_rule1\_dest [IPFIX::destination open -publisher /western-hemisphere/IPFIX-PUB1]&nbsp; }&nbsp; if { $static::http\_rule1\_tmplt == “”} {&nbsp; &nbsp; # if the template has not been created yet, create the template&nbsp; &nbsp; set static::http\_rule1\_tmplt [IPFIX::template create “flowStartMilliseconds \&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sourceIPv4Address \&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sourceIPv6Address&nbsp; \&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; destinationIPv4Address \&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; destinationIPv6Address&nbsp; \&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sourceTransportPort \&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; destinationTransportPort \&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; protocolIdentifier \&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; octetTotalCount \&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; packetTotalCount \&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; octetDeltaCount \&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; packetDeltaCount \&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; postNATSourceIPv4Address \&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; postNATSourceIPv6Address&nbsp; \&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; postNATDestinationIPv4Address \&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; postNATDestinationIPv6Address&nbsp; \&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; postNAPTSourceTransportPort \&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; postNAPTDestinationTransportPort \&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; postOctetTotalCount \&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; postPacketTotalCount \&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; postOctetDeltaCount \&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; postPacketDeltaCount \&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; flowEndMilliseconds”]&nbsp; }}&nbsp;&nbsp;# SERVER\_CONNECTED event to initiate flow data to Tetration and populate 5 tupleswhen SERVER\_CONNECTED {&nbsp; set rule1\_msg1 [IPFIX::msg create $static::http\_rule1\_tmplt]&nbsp; set client\_closed\_flag 0&nbsp; set server\_closed\_flag 0&nbsp; IPFIX::msg set $rule1\_msg1 flowStartMilliseconds $start&nbsp; IPFIX::msg set $rule1\_msg1 protocolIdentifier [IP::protocol]&nbsp;&nbsp; # Clientside&nbsp; if { [clientside {IP::version}] equals “4” } {&nbsp; &nbsp; # Client IPv4 address&nbsp; &nbsp; IPFIX::msg set $rule1\_msg1 sourceIPv4Address [IP::client\_addr]&nbsp; &nbsp; # BIG-IP IPv4 VIP address&nbsp; &nbsp; IPFIX::msg set $rule1\_msg1 destinationIPv4Address [clientside {IP::local\_addr}]&nbsp; } else {&nbsp; &nbsp; # Client IPv6 address&nbsp; &nbsp; IPFIX::msg set $rule1\_msg1 sourceIPv6Address [IP::client\_addr]&nbsp; &nbsp; # BIG-IP IPv6 VIP address&nbsp; &nbsp; IPFIX::msg set $rule1\_msg1 destinationIPv6Address [clientside {IP::local\_addr}]&nbsp; }&nbsp; # Client port&nbsp; IPFIX::msg set $rule1\_msg1 sourceTransportPort [TCP::client\_port]&nbsp; # BIG-IP VIP port&nbsp; IPFIX::msg set $rule1\_msg1 destinationTransportPort [clientside {TCP::local\_port}]&nbsp;&nbsp;&nbsp; # Serverside&nbsp; if { [serverside {IP::version}] equals “4” } {&nbsp; &nbsp; # BIG-IP IPv4 self IP address&nbsp; &nbsp; IPFIX::msg set $rule1\_msg1 postNATSourceIPv4Address [IP::local\_addr]&nbsp; &nbsp; # Server IPv4 IP address&nbsp; &nbsp; IPFIX::msg set $rule1\_msg1 postNATDestinationIPv4Address [IP::server\_addr]&nbsp; } else {&nbsp; &nbsp; # BIG-IP IPv6 self IP address&nbsp; &nbsp; IPFIX::msg set $rule1\_msg1 postNATSourceIPv6Address [IP::local\_addr]&nbsp; &nbsp; # Server IPv6 IP address&nbsp; &nbsp; IPFIX::msg set $rule1\_msg1 postNATDestinationIPv6Address [IP::server\_addr]&nbsp; }&nbsp; # BIG-IP self IP port&nbsp; IPFIX::msg set $rule1\_msg1 postNAPTSourceTransportPort [TCP::local\_port]&nbsp; # Server port&nbsp; IPFIX::msg set $rule1\_msg1 postNAPTDestinationTransportPort [TCP::server\_port]}&nbsp;# SERVER\_CLOSED event to collect IP pkts and bytes count on serversidewhen SERVER\_CLOSED {&nbsp; set server\_closed\_flag 1&nbsp; # when flow is completed, BIG-IP to server REQUEST pkts and bytes count&nbsp; IPFIX::msg set $rule1\_msg1 octetTotalCount [IP::stats bytes out]&nbsp; IPFIX::msg set $rule1\_msg1 packetTotalCount [IP::stats pkts out]&nbsp; # when flow is completed, server to BIG-IP RESPONSE pkts and bytes count&nbsp;&nbsp; IPFIX::msg set $rule1\_msg1 octetDeltaCount [IP::stats bytes in]&nbsp; IPFIX::msg set $rule1\_msg1 packetDeltaCount [IP::stats pkts in]&nbsp; if { $client\_closed\_flag == 1} {&nbsp; &nbsp; # send the IPFIX log&nbsp; &nbsp; IPFIX::destination send $static::http\_rule1\_dest $rule1\_msg1&nbsp; }}&nbsp;&nbsp;# CLIENT\_CLOSED event to collect IP pkts and bytes count on clientsidewhen CLIENT\_CLOSED {&nbsp; set client\_closed\_flag 1&nbsp; # when flow is completed, client to BIG-IP REQUEST pkts and bytes octetDeltaCount&nbsp; IPFIX::msg set $rule1\_msg1 postOctetTotalCount [IP::stats bytes in]&nbsp; IPFIX::msg set $rule1\_msg1 postPacketTotalCount [IP::stats pkts in]&nbsp; # when flow is completed, BIG-IP to client RESPONSE pkts and bytes count&nbsp; IPFIX::msg set $rule1\_msg1 postOctetDeltaCount [IP::stats bytes out]&nbsp; IPFIX::msg set $rule1\_msg1 postPacketDeltaCount [IP::stats pkts out]&nbsp; # record the client closed time in ms&nbsp; IPFIX::msg set $rule1\_msg1 flowEndMilliseconds [clock click -milliseconds]&nbsp; if { $server\_closed\_flag == 1} {&nbsp; &nbsp; # send the IPFIX log&nbsp; &nbsp; IPFIX::destination send $static::http\_rule1\_dest $rule1\_msg1&nbsp; }}

---

<div class="post-metadata">

**Author:** ![KeesvandenBos](https://avatars.discourse-cdn.com/v4/letter/k/ecb155/32.png) [@KeesvandenBos](https://community.f5.com/u/KeesvandenBos)\
**Post date:** [February 9, 2024, 4:52pm UTC](https://community.f5.com/t/tcl-errors/73966/2 "2024-02-09T16:52:54Z")

</div>

Hi,

The error occurs when the rule1\_msg1 variable is empty.  
This could happen if a client doesn’t complete the 3way handshake and send a reset. Then the CLIENT\_CLOSE event is hit without the client sending any data, leaving rule1\_msg1 being never created in the other events.

Maybe you can solve this by adding this line in the when RULE\_INIT { section

```tcl
when RULE_INIT <span class="token punctuation">{</span>
    <span class="token keyword">set</span> <span class="token variable">static::http_rule1_dest</span> <span class="token string">""</span>
    <span class="token keyword">set</span> <span class="token variable">static::http_rule1_tmplt</span> <span class="token string">""</span>
    <span class="token keyword">set</span> <span class="token variable">rule1_msg1</span> <span class="token string">""</span>
<span class="token punctuation">}</span>

```

Hope it helps.

Cheers,

Kees

---

<div class="post-metadata">

**Author:** ![adick](https://avatars.discourse-cdn.com/v4/letter/a/4af34b/32.png) [@adick](https://community.f5.com/u/adick)\
**Post date:** [February 9, 2024, 10:25pm UTC](https://community.f5.com/t/tcl-errors/73966/3 "2024-02-09T22:25:54Z")

</div>

Thanks Kees!

This seems to be a good solution.

Could there be other reasons the CLIENT\_CLOSE event could get hit without the client sending data?&nbsp; I’m wondering if this iRule could be causing any problems with the VIPs that it is configured on?&nbsp; I heard from someone when you see TCL errors it usually means the VIP communication was cut off early.

Or if because it only triggers on CLIENT\_CLOSE maybe it is something where the client already had problems communicating and this is just the error that triggers when there is another issue present.

Thanks

---

<div class="post-metadata">

**Author:** ![F5\_Design\_Engineer](https://d1p9zq3aats0t8.cloudfront.net/user_avatar/community.f5.com/f5_design_engineer/32/2479_2.png) [@F5\_Design\_Engineer](https://community.f5.com/u/F5_Design_Engineer)\
**Post date:** [February 10, 2024, 3:23am UTC](https://community.f5.com/t/tcl-errors/73966/4 "2024-02-10T03:23:13Z")

</div>

Hi Adick,

There are many TCL online editors that you can check your code, you can make changes and execute till you find the desired results.

> **[Tcl Online Compiler](https://onecompiler.com/tcl/423z8u753)**
>
> OneCompiler's Tcl online editor helps you to write, compile, debug and run Tcl code online.

> **[Online Programming Compilers and Editors](https://www.tutorialspoint.com/compilers/online-tcl-compiler.htm)**
>
> Online Programming Compilers and Editors - Free C, C++, Java, Python, PHP Online Compliers, Terminals and Editors for Software Developers to Edit, Compile, Execute and Share Programs Online.

> **[Free Online Tcl Compiler & Editor](https://www.jdoodle.com/execute-tcl-online)**
>
> Experience JDoodle's free online Tcl compiler and editor. Write, run, and debug Tcl code directly in your browser. No setup required. Ideal for quick coding and learning Tcl.

 ![image_327668.png](https://d20hrnpixdzcsd.cloudfront.net/original/2X/9/9532d5fe6fa04fe16a12ab238dd2072bcc067912.png)

> **[Tcl Online Compiler](https://onecompiler.com/tcl/423z8u753)**
>
> OneCompiler's Tcl online editor helps you to write, compile, debug and run Tcl code online.

 ![image_327668.png](https://d20hrnpixdzcsd.cloudfront.net/original/2X/8/8b0933727d66fe698a6b8d223f5125f3e5489002.png)

 ![image_327668.png](https://d20hrnpixdzcsd.cloudfront.net/original/2X/b/b94571346498c4f6bf8e630a650f3db33dc6fbe4.png)

> **[Online Programming Compilers and Editors](https://www.tutorialspoint.com/compilers/online-tcl-compiler.htm)**
>
> Online Programming Compilers and Editors - Free C, C++, Java, Python, PHP Online Compliers, Terminals and Editors for Software Developers to Edit, Compile, Execute and Share Programs Online.

 ![image_327668.png](https://d20hrnpixdzcsd.cloudfront.net/original/3X/7/2/725e7f74f6f7ae011fb5696931b591cf56fcd5c4.png)

> **[Free Online Tcl Compiler & Editor](https://www.jdoodle.com/execute-tcl-online)**
>
> Experience JDoodle's free online Tcl compiler and editor. Write, run, and debug Tcl code directly in your browser. No setup required. Ideal for quick coding and learning Tcl.

Hope this Helps.

🙏

---

<div class="post-metadata">

**Author:** ![KeesvandenBos](https://avatars.discourse-cdn.com/v4/letter/k/ecb155/32.png) [@KeesvandenBos](https://community.f5.com/u/KeesvandenBos)\
**Post date:** [February 11, 2024, 10:04am UTC](https://community.f5.com/t/tcl-errors/73966/5 "2024-02-11T10:04:21Z")

</div>

Your welcome.

CLIENT\_CLOSED events gets triggers by the client ending the connection. And yes it is true, any TCL error will cause the Virtual Server to stop processing traffic.

rule1\_msg1 not being filled with data (and causing the TCL error) will only happen if a client doesn’t send any data after the connection has been created, same for SERVER\_CLOSED TCL error. If this irule is attached to a virtual server without a proxy profile (L7 connection) the BIG-IP will create the server connection the moment thhttps://my.f5.com/manage/s/article/K8082e client connection is completed. If the client doesn’t send any data, in the end the pool member will close its connection with the BIG-IP.  
[K8082](https://my.f5.com/manage/s/article/K8082) explains the differences between virtual server types.

It could be a client issue causing these erros’ Still it is better to first create an empty variable to make sure you do not run into issues.

Cheers,  
Kees
