提交 ad8d4f37 创建 作者: Silas Boyd-Wickizer's avatar Silas Boyd-Wickizer

Close lwIP sockets correctly.

上级 f2afe63f
...@@ -30,13 +30,19 @@ filedup(struct file *f) ...@@ -30,13 +30,19 @@ filedup(struct file *f)
void void
fileclose(struct file *f) fileclose(struct file *f)
{ {
if (__sync_sub_and_fetch(&f->ref, 1) > 0) extern void netclose(int sock);
if (subfetch(&f->ref, 1) > 0)
return; return;
if(f->type == FD_PIPE) if(f->type == FD_PIPE)
pipeclose(f->pipe, f->writable); pipeclose(f->pipe, f->writable);
else if(f->type == FD_INODE) else if(f->type == FD_INODE)
iput(f->ip); iput(f->ip);
else if(f->type == FD_SOCKET)
netclose(f->socket);
else
panic("fileclose bad type");
kmfree(f); kmfree(f);
} }
......
...@@ -261,6 +261,12 @@ netaccept(int sock, void *xaddr, void *xaddrlen) ...@@ -261,6 +261,12 @@ netaccept(int sock, void *xaddr, void *xaddrlen)
return ss; return ss;
} }
void
netclose(int sock)
{
lwip_close(sock);
}
#else #else
void void
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论