comparison src/event/ngx_event_connect.c @ 137:2a615b036870

nginx-0.0.1-2003-10-03-19:50:53 import
author Igor Sysoev <igor@sysoev.ru>
date Fri, 03 Oct 2003 15:50:53 +0000
parents da00cde00e8a
children 54307053f185
comparison
equal deleted inserted replaced
136:da00cde00e8a 137:2a615b036870
7 7
8 /* AF_INET only */ 8 /* AF_INET only */
9 9
10 int ngx_event_connect_peer(ngx_peer_connection_t *pc) 10 int ngx_event_connect_peer(ngx_peer_connection_t *pc)
11 { 11 {
12 int rc, instance; 12 int rc, instance, event;
13 time_t now; 13 time_t now;
14 ngx_err_t err; 14 ngx_err_t err;
15 ngx_peer_t *peer; 15 ngx_peer_t *peer;
16 ngx_socket_t s; 16 ngx_socket_t s;
17 ngx_event_t *rev, *wev; 17 ngx_event_t *rev, *wev;
173 if (ngx_add_conn(c) == NGX_ERROR) { 173 if (ngx_add_conn(c) == NGX_ERROR) {
174 return NGX_ERROR; 174 return NGX_ERROR;
175 } 175 }
176 } 176 }
177 177
178 ngx_memzero(&addr, sizeof(struct sockaddr_in));
179
178 addr.sin_family = AF_INET; 180 addr.sin_family = AF_INET;
179 addr.sin_addr.s_addr = peer->addr; 181 addr.sin_addr.s_addr = peer->addr;
180 addr.sin_port = htons(peer->port); 182 addr.sin_port = peer->port;
181 183
182 rc = connect(s, (struct sockaddr *) &addr, sizeof(struct sockaddr_in)); 184 rc = connect(s, (struct sockaddr *) &addr, sizeof(struct sockaddr_in));
183 185
184 if (rc == -1) { 186 if (rc == -1) {
185 err = ngx_socket_errno; 187 err = ngx_socket_errno;
193 195
194 return NGX_CONNECT_ERROR; 196 return NGX_CONNECT_ERROR;
195 } 197 }
196 } 198 }
197 199
200 /* TODO: epoll, aio, iocp */
201
202 if (ngx_event_flags & NGX_HAVE_CLEAR_EVENT) { /* kqueue */
203 event = NGX_CLEAR_EVENT;
204
205 } else { /* select, poll, /dev/poll */
206 event = NGX_LEVEL_EVENT;
207 }
208
209 if (rc == -1) {
210
211 /* NGX_EINPROGRESS */
212
213 if (ngx_add_event(wev, NGX_WRITE_EVENT, event) != NGX_OK) {
214 return NGX_ERROR;
215 }
216
217 return NGX_AGAIN;
218 }
219
220 if (ngx_add_event(rev, NGX_READ_EVENT, event) != NGX_OK) {
221 return NGX_ERROR;
222 }
223
198 return NGX_OK; 224 return NGX_OK;
199 } 225 }
200 226
201 227
202 void ngx_event_connect_peer_failed(ngx_peer_connection_t *pc) 228 void ngx_event_connect_peer_failed(ngx_peer_connection_t *pc)
203 { 229 {
230 pc->tries--;
231
204 return; 232 return;
205 } 233 }