Mercurial > hg > nginx
comparison src/os/unix/ngx_writev_chain.c @ 3063:6f6d7ea70805
refactor EAGAIN/EINTR processing
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Sun, 30 Aug 2009 09:42:29 +0000 |
parents | f69d1aab6a0f |
children | d620f497c50f |
comparison
equal
deleted
inserted
replaced
3062:aa720192937b | 3063:6f6d7ea70805 |
---|---|
108 n = writev(c->fd, vec.elts, vec.nelts); | 108 n = writev(c->fd, vec.elts, vec.nelts); |
109 | 109 |
110 if (n == -1) { | 110 if (n == -1) { |
111 err = ngx_errno; | 111 err = ngx_errno; |
112 | 112 |
113 if (err == NGX_EAGAIN || err == NGX_EINTR) { | 113 switch (err) { |
114 if (err == NGX_EINTR) { | 114 case NGX_EAGAIN: |
115 eintr = 1; | 115 break; |
116 } | |
117 | 116 |
118 ngx_log_debug0(NGX_LOG_DEBUG_EVENT, c->log, err, | 117 case NGX_EINTR: |
119 "writev() not ready"); | 118 eintr = 1; |
119 break; | |
120 | 120 |
121 } else { | 121 default: |
122 wev->error = 1; | 122 wev->error = 1; |
123 (void) ngx_connection_error(c, err, "writev() failed"); | 123 (void) ngx_connection_error(c, err, "writev() failed"); |
124 return NGX_CHAIN_ERROR; | 124 return NGX_CHAIN_ERROR; |
125 } | 125 } |
126 | |
127 ngx_log_debug0(NGX_LOG_DEBUG_EVENT, c->log, err, | |
128 "writev() not ready"); | |
126 } | 129 } |
127 | 130 |
128 sent = n > 0 ? n : 0; | 131 sent = n > 0 ? n : 0; |
129 | 132 |
130 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "writev: %z", sent); | 133 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "writev: %z", sent); |