TCP_Process_ack() unblocks RTCS_selectset() regardless of sockset

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

TCP_Process_ack() unblocks RTCS_selectset() regardless of sockset

跳至解决方案
1,150 次查看
daido
Contributor II

I'm using MQX 4.0.2.2.

TCP_Process_ack() unblocks RTCS_selectset() regardless of sockset.

Undesired Scket handle is returned.

It was no such a thing until in MQX 4.0.1.

Already corrected in MQX 4.1.0 ?

0 项奖励
回复
1 解答
900 次查看
Martin_
NXP Employee
NXP Employee

You're right, there is such problem. In sosel.c, function _SOCK_select_signal:

         /* check if sock is on the select waiting list (array) */

//         if (!flag)

         {        

            for (i = 0; i < parms->sock_count; i++)

            {

                if (parms->sock_ptr[i] == sock)

                {

                    break;

                } 

            }

              

            if(i >= parms->sock_count)

            {

                continue;

            }

              

         }

I think just comment out line 2 in the above code snippet should help.  (remove the !flag condition).

There will be a new BSD-like select() function in next MQX release. MQX 4.1.0 still has this problem.

在原帖中查看解决方案

0 项奖励
回复
1 回复
901 次查看
Martin_
NXP Employee
NXP Employee

You're right, there is such problem. In sosel.c, function _SOCK_select_signal:

         /* check if sock is on the select waiting list (array) */

//         if (!flag)

         {        

            for (i = 0; i < parms->sock_count; i++)

            {

                if (parms->sock_ptr[i] == sock)

                {

                    break;

                } 

            }

              

            if(i >= parms->sock_count)

            {

                continue;

            }

              

         }

I think just comment out line 2 in the above code snippet should help.  (remove the !flag condition).

There will be a new BSD-like select() function in next MQX release. MQX 4.1.0 still has this problem.

0 项奖励
回复