2019独角兽企业重金招聘Python工程师标准>>>

函数:

ngx_unix_send

解析:

for ( ;; ) {n = send(c->fd, buf, size, 0);

通过send函数发送缓冲区里的内容。注意:

send仅仅是把buf中的数据copy到套接字sockfd的发送缓冲区的剩余空间里)。

接下来是:

if (n > 0) {if (n < (ssize_t) size) {wev->ready = 0;}return n;
}

意思是:如果确实发送出去了若干字符,分情况:

1)发送了部分,设置wev->ready为0,表示还需要再发送数据

2)全部发送完,不设置。

返回实际发送的个数。

if (n == 0) {ngx_log_error(NGX_LOG_ALERT, c->log, err, "send() returned zero");wev->ready = 0;return n;}

如果n等于0,

标记一下write event,返回0

~~~剩下就是错误了。

if (err == NGX_EAGAIN || err == NGX_EINTR) {wev->ready = 0;ngx_log_debug0(NGX_LOG_DEBUG_EVENT, c->log, err,"send() not ready");if (err == NGX_EAGAIN) {return NGX_AGAIN;}} else {wev->error = 1;ngx_connection_error(c, err, "recv() failed");return NGX_ERROR;}

如果是信号中断或者其它问题导致的非严重错误,则标记写事件。

如果是真的错误,则标记写事件的error为1.

转载于:https://my.oschina.net/qiangzigege/blog/194033

nginx-0.1.0文件分析3:ngx_send.c相关推荐

  1. PE文件和COFF文件格式分析--MS-DOS 2.0兼容Exe文件段

    MS 2.0节是PE文件格式中第一个"节".其大致结构如下:(转载请指明来源于breaksoftware的csdn博客) 在VC\PlatformSDK\Include\WinNT ...

  2. android文件上传413 nginx [error] 9679#0: *318855 client intended to send too large body: 1593409 bytes

    问题描述: android 图片文件上传服务器返回 413 ios 上传正常 排查: # whereis nginx # vi /etc/nginx/nginx.conf 查看日志存放地址 # cat ...

  3. 熊海CMS_V1.0代码审计与漏洞分析及采坑日记(一)--文件包含漏洞

    前言 最近几天在给协会的学弟讲代码审计入门相关内容,便找了这个熊海CMS_V1.0来教学,结果在这个过程中遇到蛮多问题的,于是这篇文章详细记录了对熊海CMS_V1.0从搭建到审计与漏洞分析的过程,其中 ...

  4. 火绒安全v5.0.45 附单文件版

    文章目录[隐藏] 软件介绍 软件截图 软件介绍 火绒是一款轻巧.高效.超强防御的安全防护软件.功能强悍,体量轻巧,既干净又安静.它能全面防御病毒.木马.流氓软件.流氓网站等对电脑系统和用户信息的威胁行 ...

  5. linux安装nginx1.14.0,Ubuntu 14.04 安装最新稳定版Nginx 1.6.0

    Ubuntu14.04默认安装的是Nginx 1.4.6 如果已经安装,请先卸载 sudo apt-get remove nginx 最新的稳定版Nginx 1.6.0在ubuntuupdates p ...

  6. NVIDIA DeepStream 5.0构建智能视频分析应用程序

    NVIDIA DeepStream 5.0构建智能视频分析应用程序 无论是要平衡产品分配和优化流量的仓库,工厂流水线检查还是医院管理,要确保员工和护理人员在照顾病人的同时使用个人保护设备(PPE),就 ...

  7. oracle log block size,案例:Oracle无法启动报错ORA-00218: block size 0 重建控制文件

    天萃荷净 oracle数据库无法启动报错ORA-00218故障,通过重建控制文件解决文件损坏问题 遇到一个案例在数据库启动的时候报ORA-00218错误,而这个故障的引起原因是因为重建控制文件的时候, ...

  8. Android 6.0.1 Location Service 分析

    定位服务是手机上最常用的功能之一,据说也是相对比较简单的服务,所以从这里入手.其他系统服务的架构都是类似的.明白其中一个之后,再去理解其他的会容易得多.下面以 Android 源码为基础,大致分析了 ...

  9. 【Vue】Docker + Nginx 部署 Vue3.0 项目

    Docker + Nginx 部署 Vue3.0 项目 1.用指令 npm run build 打包vue.js项目(该项目是在WebStorm里面新建的Vue空项目). 打包成功后,会生成一个目录d ...

  10. nginx 1.14.0 配置部署 thinkphp 5.1

    开始接触NGINX,配置tp5配了半天,找不到具体原因,于是用网上搜索到的配置复制粘贴搞定. 感谢 https://blog.csdn.net/qq_36431213/article/details/ ...

最新文章

  1. OI基础系列之最大子数组问题
  2. YYDS!怪不得很多朋友去杭州,原来有10W+的福利!
  3. 赤兔四足机器人的作用_腾讯 Robotics X 实验室四足移动机器人Jamoca首亮相,可挑战高难度梅花桩...
  4. matplotlib一些常用知识点的整理,
  5. jquery添加div实现消息聊天框
  6. Django restframwork实现自定义数据格式的分页与搜索
  7. 【codevs3304】水果姐逛水果店Ⅰ,线段树练习
  8. 看看junit在一个具体的项目中
  9. Struts2中的校验器
  10. UE4【C++】子弹伤害系统使用
  11. Json本地校验工具--HiJson
  12. 文件同步工具CwRsync的使用教程
  13. 女性黑客的崛起将造福世界
  14. 开源软件、自由软件、Copyleft、CC都是啥,傻傻分不清楚?
  15. 2018年10月Top 10机器学习开源项目
  16. 使用GeoServer发布Shapfile数据
  17. python怎样编程_怎么自学python编程
  18. 破解大众点评token
  19. 国外甲醇汽油的应用概况
  20. [DA45] 时间序列预测上证指数

热门文章

  1. 清华NLP实验室刘知远:如何写一篇合格的NLP论文
  2. 有bug!用Pytorch Lightning重构代码速度更慢,修复后速度倍增
  3. 苹果M1 Max芯片发布:570亿晶体管,图形性能堪比RTX 3080
  4. 惊了,AI已经学会刷LeetCode了!
  5. 特斯拉AI总监用300行代码实现“迷你版GPT”,上线GitHub三天收获3.3k星
  6. 吴恩达灵魂发问:AI社区最亟待解决的问题是什么?
  7. 如何去判断一个面试者的深度学习水平?
  8. 哪些“双一流”更得华为偏爱?这所高校人数远超清北华五
  9. 如何欣赏一个深度学习框架?
  10. 32岁程序员,失业4个月45次面试经历,与君共勉