Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
NetWork
Opentracker
提交
1af67bab
O
Opentracker
项目概览
NetWork
/
Opentracker
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
Opentracker
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
1af67bab
编写于
3月 31, 2012
作者:
E
erdgeist
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Try to act upon all udp packets at once
上级
1968f47d
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
8 addition
and
6 deletion
+8
-6
opentracker.c
opentracker.c
+1
-1
ot_udp.c
ot_udp.c
+7
-5
未找到文件。
opentracker.c
浏览文件 @
1af67bab
...
...
@@ -266,7 +266,7 @@ static void * server_mainloop( void * args ) {
if
(
(
intptr_t
)
cookie
==
FLAG_TCP
)
handle_accept
(
sock
);
else
if
(
(
intptr_t
)
cookie
==
FLAG_UDP
)
handle_udp6
(
sock
,
&
ws
)
;
while
(
handle_udp6
(
sock
,
&
ws
)
)
{}
;
else
if
(
(
intptr_t
)
cookie
==
FLAG_SELFPIPE
)
io_tryread
(
sock
,
ws
.
inbuf
,
G_INBUF_SIZE
);
else
...
...
ot_udp.c
浏览文件 @
1af67bab
...
...
@@ -28,7 +28,7 @@ static void udp_make_connectionid( uint32_t * connid, const ot_ip6 remoteip ) {
}
/* UDP implementation according to http://xbtt.sourceforge.net/udp_tracker_protocol.html */
void
handle_udp6
(
int64
serversocket
,
struct
ot_workstruct
*
ws
)
{
int
handle_udp6
(
int64
serversocket
,
struct
ot_workstruct
*
ws
)
{
ot_ip6
remoteip
;
uint32_t
*
inpacket
=
(
uint32_t
*
)
ws
->
inbuf
;
uint32_t
*
outpacket
=
(
uint32_t
*
)
ws
->
outbuf
;
...
...
@@ -37,6 +37,7 @@ void handle_udp6( int64 serversocket, struct ot_workstruct *ws ) {
size_t
byte_count
,
scrape_count
;
byte_count
=
socket_recv6
(
serversocket
,
ws
->
inbuf
,
G_INBUF_SIZE
,
remoteip
,
&
remoteport
,
&
scopeid
);
if
(
!
byte_count
)
return
0
;
stats_issue_event
(
EVENT_ACCEPT
,
FLAG_UDP
,
(
uintptr_t
)
remoteip
);
stats_issue_event
(
EVENT_READ
,
FLAG_UDP
,
byte_count
);
...
...
@@ -47,13 +48,13 @@ void handle_udp6( int64 serversocket, struct ot_workstruct *ws ) {
/* Minimum udp tracker packet size, also catches error */
if
(
byte_count
<
16
)
return
;
return
1
;
switch
(
ntohl
(
inpacket
[
2
]
)
)
{
case
0
:
/* This is a connect action */
/* look for udp bittorrent magic id */
if
(
(
ntohl
(
inpacket
[
0
])
!=
0x00000417
)
||
(
ntohl
(
inpacket
[
1
])
!=
0x27101980
)
)
return
;
return
1
;
outpacket
[
0
]
=
0
;
outpacket
[
1
]
=
inpacket
[
3
];
...
...
@@ -65,7 +66,7 @@ void handle_udp6( int64 serversocket, struct ot_workstruct *ws ) {
case
1
:
/* This is an announce action */
/* Minimum udp announce packet size */
if
(
byte_count
<
98
)
return
;
return
1
;
/* We do only want to know, if it is zero */
left
=
inpacket
[
64
/
4
]
|
inpacket
[
68
/
4
];
...
...
@@ -116,6 +117,7 @@ void handle_udp6( int64 serversocket, struct ot_workstruct *ws ) {
stats_issue_event
(
EVENT_SCRAPE
,
FLAG_UDP
,
scrape_count
);
break
;
}
return
1
;
}
void
udp_init
(
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录