improved tcp_acceptto.
This commit is contained in:
parent
1991246020
commit
c367670fa8
@ -2247,6 +2247,7 @@ tcp_fd_t *tcp_fd;
|
|||||||
tcp_conn_t *tcp_conn;
|
tcp_conn_t *tcp_conn;
|
||||||
tcp_cookie_t *cookiep;
|
tcp_cookie_t *cookiep;
|
||||||
acc_t *data;
|
acc_t *data;
|
||||||
|
tcp_cookie_t cookie;
|
||||||
|
|
||||||
if (!(tcp_fd->tf_flags & TFF_LISTENQ))
|
if (!(tcp_fd->tf_flags & TFF_LISTENQ))
|
||||||
{
|
{
|
||||||
@ -2272,11 +2273,13 @@ tcp_fd_t *tcp_fd;
|
|||||||
|
|
||||||
data= bf_packIffLess(data, sizeof(*cookiep));
|
data= bf_packIffLess(data, sizeof(*cookiep));
|
||||||
cookiep= (tcp_cookie_t *)ptr2acc_data(data);
|
cookiep= (tcp_cookie_t *)ptr2acc_data(data);
|
||||||
|
cookie= *cookiep;
|
||||||
|
|
||||||
dst_nr= cookiep->tc_ref;
|
bf_afree(data); data= NULL;
|
||||||
|
|
||||||
|
dst_nr= cookie.tc_ref;
|
||||||
if (dst_nr < 0 || dst_nr >= TCP_FD_NR)
|
if (dst_nr < 0 || dst_nr >= TCP_FD_NR)
|
||||||
{
|
{
|
||||||
bf_afree(data); data= NULL;
|
|
||||||
printf("tcp_acceptto: bad fd %d\n", dst_nr);
|
printf("tcp_acceptto: bad fd %d\n", dst_nr);
|
||||||
tcp_reply_ioctl(tcp_fd, EINVAL);
|
tcp_reply_ioctl(tcp_fd, EINVAL);
|
||||||
return NW_OK;
|
return NW_OK;
|
||||||
@ -2287,21 +2290,17 @@ tcp_fd_t *tcp_fd;
|
|||||||
dst_fd->tf_conn != NULL ||
|
dst_fd->tf_conn != NULL ||
|
||||||
!(dst_fd->tf_flags & TFF_COOKIE))
|
!(dst_fd->tf_flags & TFF_COOKIE))
|
||||||
{
|
{
|
||||||
bf_afree(data); data= NULL;
|
|
||||||
printf("tcp_acceptto: bad flags 0x%x or conn %p for fd %d\n",
|
printf("tcp_acceptto: bad flags 0x%x or conn %p for fd %d\n",
|
||||||
dst_fd->tf_flags, dst_fd->tf_conn, dst_nr);
|
dst_fd->tf_flags, dst_fd->tf_conn, dst_nr);
|
||||||
tcp_reply_ioctl(tcp_fd, EINVAL);
|
tcp_reply_ioctl(tcp_fd, EINVAL);
|
||||||
return NW_OK;
|
return NW_OK;
|
||||||
}
|
}
|
||||||
if (memcmp(cookiep, &dst_fd->tf_cookie, sizeof(*cookiep)) != 0)
|
if (memcmp(&cookie, &dst_fd->tf_cookie, sizeof(cookie)) != 0)
|
||||||
{
|
{
|
||||||
bf_afree(data); data= NULL;
|
|
||||||
printf("tcp_acceptto: bad cookie\n");
|
printf("tcp_acceptto: bad cookie\n");
|
||||||
return NW_OK;
|
return NW_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
bf_afree(data); data= NULL;
|
|
||||||
|
|
||||||
/* Move connection */
|
/* Move connection */
|
||||||
tcp_fd->tf_listenq[i]= NULL;
|
tcp_fd->tf_listenq[i]= NULL;
|
||||||
tcp_conn->tc_fd= dst_fd;
|
tcp_conn->tc_fd= dst_fd;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user