improved tcp_acceptto.

This commit is contained in:
Philip Homburg 2006-02-17 13:47:31 +00:00
parent 1991246020
commit c367670fa8

View File

@ -2247,6 +2247,7 @@ tcp_fd_t *tcp_fd;
tcp_conn_t *tcp_conn;
tcp_cookie_t *cookiep;
acc_t *data;
tcp_cookie_t cookie;
if (!(tcp_fd->tf_flags & TFF_LISTENQ))
{
@ -2272,11 +2273,13 @@ tcp_fd_t *tcp_fd;
data= bf_packIffLess(data, sizeof(*cookiep));
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)
{
bf_afree(data); data= NULL;
printf("tcp_acceptto: bad fd %d\n", dst_nr);
tcp_reply_ioctl(tcp_fd, EINVAL);
return NW_OK;
@ -2287,21 +2290,17 @@ tcp_fd_t *tcp_fd;
dst_fd->tf_conn != NULL ||
!(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",
dst_fd->tf_flags, dst_fd->tf_conn, dst_nr);
tcp_reply_ioctl(tcp_fd, EINVAL);
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");
return NW_OK;
}
bf_afree(data); data= NULL;
/* Move connection */
tcp_fd->tf_listenq[i]= NULL;
tcp_conn->tc_fd= dst_fd;