nginx-0.1.0文件分析3:ngx_send.c
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相关推荐
- PE文件和COFF文件格式分析--MS-DOS 2.0兼容Exe文件段
MS 2.0节是PE文件格式中第一个"节".其大致结构如下:(转载请指明来源于breaksoftware的csdn博客) 在VC\PlatformSDK\Include\WinNT ...
- 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 ...
- 熊海CMS_V1.0代码审计与漏洞分析及采坑日记(一)--文件包含漏洞
前言 最近几天在给协会的学弟讲代码审计入门相关内容,便找了这个熊海CMS_V1.0来教学,结果在这个过程中遇到蛮多问题的,于是这篇文章详细记录了对熊海CMS_V1.0从搭建到审计与漏洞分析的过程,其中 ...
- 火绒安全v5.0.45 附单文件版
文章目录[隐藏] 软件介绍 软件截图 软件介绍 火绒是一款轻巧.高效.超强防御的安全防护软件.功能强悍,体量轻巧,既干净又安静.它能全面防御病毒.木马.流氓软件.流氓网站等对电脑系统和用户信息的威胁行 ...
- 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 ...
- NVIDIA DeepStream 5.0构建智能视频分析应用程序
NVIDIA DeepStream 5.0构建智能视频分析应用程序 无论是要平衡产品分配和优化流量的仓库,工厂流水线检查还是医院管理,要确保员工和护理人员在照顾病人的同时使用个人保护设备(PPE),就 ...
- oracle log block size,案例:Oracle无法启动报错ORA-00218: block size 0 重建控制文件
天萃荷净 oracle数据库无法启动报错ORA-00218故障,通过重建控制文件解决文件损坏问题 遇到一个案例在数据库启动的时候报ORA-00218错误,而这个故障的引起原因是因为重建控制文件的时候, ...
- Android 6.0.1 Location Service 分析
定位服务是手机上最常用的功能之一,据说也是相对比较简单的服务,所以从这里入手.其他系统服务的架构都是类似的.明白其中一个之后,再去理解其他的会容易得多.下面以 Android 源码为基础,大致分析了 ...
- 【Vue】Docker + Nginx 部署 Vue3.0 项目
Docker + Nginx 部署 Vue3.0 项目 1.用指令 npm run build 打包vue.js项目(该项目是在WebStorm里面新建的Vue空项目). 打包成功后,会生成一个目录d ...
- nginx 1.14.0 配置部署 thinkphp 5.1
开始接触NGINX,配置tp5配了半天,找不到具体原因,于是用网上搜索到的配置复制粘贴搞定. 感谢 https://blog.csdn.net/qq_36431213/article/details/ ...
最新文章
- OI基础系列之最大子数组问题
- YYDS!怪不得很多朋友去杭州,原来有10W+的福利!
- 赤兔四足机器人的作用_腾讯 Robotics X 实验室四足移动机器人Jamoca首亮相,可挑战高难度梅花桩...
- matplotlib一些常用知识点的整理,
- jquery添加div实现消息聊天框
- Django restframwork实现自定义数据格式的分页与搜索
- 【codevs3304】水果姐逛水果店Ⅰ,线段树练习
- 看看junit在一个具体的项目中
- Struts2中的校验器
- UE4【C++】子弹伤害系统使用
- Json本地校验工具--HiJson
- 文件同步工具CwRsync的使用教程
- 女性黑客的崛起将造福世界
- 开源软件、自由软件、Copyleft、CC都是啥,傻傻分不清楚?
- 2018年10月Top 10机器学习开源项目
- 使用GeoServer发布Shapfile数据
- python怎样编程_怎么自学python编程
- 破解大众点评token
- 国外甲醇汽油的应用概况
- [DA45] 时间序列预测上证指数
热门文章
- 清华NLP实验室刘知远:如何写一篇合格的NLP论文
- 有bug!用Pytorch Lightning重构代码速度更慢,修复后速度倍增
- 苹果M1 Max芯片发布:570亿晶体管,图形性能堪比RTX 3080
- 惊了,AI已经学会刷LeetCode了!
- 特斯拉AI总监用300行代码实现“迷你版GPT”,上线GitHub三天收获3.3k星
- 吴恩达灵魂发问:AI社区最亟待解决的问题是什么?
- 如何去判断一个面试者的深度学习水平?
- 哪些“双一流”更得华为偏爱?这所高校人数远超清北华五
- 如何欣赏一个深度学习框架?
- 32岁程序员,失业4个月45次面试经历,与君共勉