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);