Mercurial > hg > nginx
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; |