免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: 可可熊
打印 上一主题 下一主题

lighttpd代码问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-08-29 08:54 |只看该作者

回复 #10 selfrun 的帖子

看到了,不理解为什么AF_UNIX的时候要做connect尝试。

论坛徽章:
0
12 [报告]
发表于 2008-08-29 08:55 |只看该作者
原帖由 converse 于 2008-8-28 17:53 发表
很抱歉,这种case(AF_UNIX)我没有关注过,目前仅关注IPV4的实现,IPV6和unix域协议我没有用过也不会用.


我也没用过UNIX IPV6,不过看到这个觉得挺奇怪;顺便问下lighttpd有开发者的maillist吗,我竟然找不到。

论坛徽章:
0
13 [报告]
发表于 2008-08-29 09:08 |只看该作者
设置socket addr完了要connect一下自己,为了检查连接是否正确

论坛徽章:
0
14 [报告]
发表于 2008-08-29 11:29 |只看该作者

回复 #13 0vk0 的帖子

检查连接是否正确?

论坛徽章:
0
15 [报告]
发表于 2008-08-29 17:26 |只看该作者
这里回复可可熊给我的短信:

在server.c主函数中有plugins_call_set_defaults()函数的调用,但我找不到这个函数的实现,只有定义,也没有其它模块中找到。


这个函数的实现在plugins.c文件中, 用了那些C高人所谓自动生成代码的宏:

  1. #define PLUGIN_TO_SLOT(x, y) \
  2.         handler_t plugins_call_##y(server *srv) {\
  3.                 plugin **slot;\
  4.                 size_t j;\
  5.                 if (!srv->plugin_slots) return HANDLER_GO_ON;\
  6.                 slot = ((plugin ***)(srv->plugin_slots))[x];\
  7.                 if (!slot) return HANDLER_GO_ON;\
  8.                 for (j = 0; j < srv->plugins.used && slot[j]; j++) { \
  9.                         plugin *p = slot[j];\
  10.                         handler_t r;\
  11.                         switch(r = p->y(srv, p->data)) {\
  12.                         case HANDLER_GO_ON:\
  13.                                 break;\
  14.                         case HANDLER_FINISHED:\
  15.                         case HANDLER_COMEBACK:\
  16.                         case HANDLER_WAIT_FOR_EVENT:\
  17.                         case HANDLER_WAIT_FOR_FD:\
  18.                         case HANDLER_ERROR:\
  19.                                 return r;\
  20.                         default:\
  21.                                 log_error_write(srv, __FILE__, __LINE__, "sbsd", #x, p->name, "unknown state:", r);\
  22.                                 return HANDLER_ERROR;\
  23.                         }\
  24.                 }\
  25.                 return HANDLER_GO_ON;\
  26.         }


  27. PLUGIN_TO_SLOT(PLUGIN_FUNC_SET_DEFAULTS, set_defaults)
复制代码


这个例子从一个侧面回答使用所谓的"自动代码生成宏"会对代码的可读性造成多大的破坏.

论坛徽章:
0
16 [报告]
发表于 2008-09-02 08:55 |只看该作者

回复 #15 converse 的帖子

多谢了;
用ctags找不到跳转,也grep不到,原来是个宏自动生成的,使用了gcc的扩民属性,粘贴宏。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP