comparison src/event/ngx_event_connect.c @ 186:c1f3a3c7c5db

nginx-0.0.1-2003-11-17-00:49:42 import
author Igor Sysoev <igor@sysoev.ru>
date Sun, 16 Nov 2003 21:49:42 +0000
parents edf29bb717da
children c966c09be66b
comparison
equal deleted inserted replaced
185:d5f50cefc322 186:c1f3a3c7c5db
178 } 178 }
179 179
180 ngx_memzero(&addr, sizeof(struct sockaddr_in)); 180 ngx_memzero(&addr, sizeof(struct sockaddr_in));
181 181
182 addr.sin_family = AF_INET; 182 addr.sin_family = AF_INET;
183 addr.sin_port = peer->port;
183 addr.sin_addr.s_addr = peer->addr; 184 addr.sin_addr.s_addr = peer->addr;
184 addr.sin_port = peer->port;
185 185
186 ngx_log_debug(pc->log, "CONNECT: %s" _ peer->addr_port_text.data); 186 ngx_log_debug(pc->log, "CONNECT: %s" _ peer->addr_port_text.data);
187 187
188 rc = connect(s, (struct sockaddr *) &addr, sizeof(struct sockaddr_in)); 188 rc = connect(s, (struct sockaddr *) &addr, sizeof(struct sockaddr_in));
189 189
190 if (rc == -1) { 190 if (rc == -1) {
191 err = ngx_socket_errno; 191 err = ngx_socket_errno;
192 if (err != NGX_EINPROGRESS) { 192
193 /* Winsock returns WSAEWOULDBLOCK */
194
195 if (err != NGX_EINPROGRESS && err != NGX_EAGAIN) {
193 ngx_log_error(NGX_LOG_ERR, pc->log, err, "connect() failed"); 196 ngx_log_error(NGX_LOG_ERR, pc->log, err, "connect() failed");
194 197
195 if (ngx_close_socket(s) == -1) { 198 if (ngx_close_socket(s) == -1) {
196 ngx_log_error(NGX_LOG_ALERT, pc->log, ngx_socket_errno, 199 ngx_log_error(NGX_LOG_ALERT, pc->log, ngx_socket_errno,
197 ngx_close_socket_n " failed"); 200 ngx_close_socket_n " failed");
219 return NGX_ERROR; 222 return NGX_ERROR;
220 } 223 }
221 224
222 /* 225 /*
223 * aio allows to post operation on non-connected socket 226 * aio allows to post operation on non-connected socket
224 * at least in FreeBSD 227 * at least in FreeBSD.
228 * NT does not support it.
225 * 229 *
226 * TODO: check in Win32, etc. As workaround we can use NGX_ONESHOT_EVENT 230 * TODO: check in Win32, etc. As workaround we can use NGX_ONESHOT_EVENT
227 */ 231 */
228 232
229 rev->ready = 1; 233 rev->ready = 1;