Changeset 4c963d7e24928576cb0e4a600c35e964b4ba5cca
- Timestamp:
- 06/22/08 04:18:11
(5 years ago)
- Author:
- Theo Schlossnagle <jesus@omniti.com>
- git-committer:
- Theo Schlossnagle <jesus@omniti.com> 1214108291 +0000
- git-parent:
[327712134f74d1a3209f8beee3b0f593e721c8f6]
- git-author:
- Theo Schlossnagle <jesus@omniti.com> 1214108291 +0000
- Message:
write the eventer... checks are working, but the telnet console is not, refs #32
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| re218b2e |
r4c963d7 |
|
| 16 | 16 | extern struct _eventer_impl eventer_epoll_impl; |
|---|
| 17 | 17 | #endif |
|---|
| | 18 | #ifdef HAVE_PORTS |
|---|
| | 19 | extern struct _eventer_impl eventer_ports_impl; |
|---|
| | 20 | #endif |
|---|
| 18 | 21 | |
|---|
| 19 | 22 | eventer_impl_t registered_eventers[] = { |
|---|
| … | … | |
| 23 | 26 | #ifdef HAVE_EPOLL |
|---|
| 24 | 27 | &eventer_epoll_impl, |
|---|
| | 28 | #endif |
|---|
| | 29 | #ifdef HAVE_PORTS |
|---|
| | 30 | &eventer_ports_impl, |
|---|
| 25 | 31 | #endif |
|---|
| 26 | 32 | NULL |
|---|
| r3277121 |
r4c963d7 |
|
| 61 | 61 | #undef HAVE_SYS_PARAM_H |
|---|
| 62 | 62 | #undef HAVE_SEMAPHORE_H |
|---|
| 63 | | #undef HAVE)ALLOA_H |
|---|
| | 63 | #undef HAVE_ALLOCA_H |
|---|
| 64 | 64 | #undef HAVE_TIME_H |
|---|
| 65 | 65 | #undef HAVE_SYS_STAT_H |
|---|
| … | … | |
| 107 | 107 | /* Kernel epoll_create() support */ |
|---|
| 108 | 108 | #undef HAVE_EPOLL |
|---|
| | 109 | /* Kernel port_create() support */ |
|---|
| | 110 | #undef HAVE_PORTS |
|---|
| 109 | 111 | |
|---|
| 110 | 112 | /* The number of bytes in a char. */ |
|---|
| r3277121 |
r4c963d7 |
|
| 273 | 273 | allocate_pty(int *master, int *slave) { |
|---|
| 274 | 274 | #ifdef HAVE_OPENPTY |
|---|
| 275 | | return openpty(master, slave, NULL, NULL, NULL); |
|---|
| | 275 | if(openpty(master, slave, NULL, NULL, NULL)) return -1; |
|---|
| | 276 | if(ioctl(ncct->pty_master, FIONBIO, &on)) return -1; |
|---|
| 276 | 277 | #else |
|---|
| 277 | | /* STREAMS... sigh */ |
|---|
| 278 | | char *slavename; |
|---|
| 279 | | extern char *ptsname(); |
|---|
| 280 | | |
|---|
| 281 | | *master = open("/dev/ptmx", O_RDWR); /* open master */ |
|---|
| 282 | | if(*master < 0) return -1; |
|---|
| 283 | | grantpt(*master); /* change permission of slave */ |
|---|
| 284 | | unlockpt(*master); /* unlock slave */ |
|---|
| 285 | | slavename = ptsname(*master); /* get name of slave */ |
|---|
| 286 | | *slave = open(slavename, O_RDWR); /* open slave */ |
|---|
| 287 | | if(*slave < 0) { |
|---|
| 288 | | close(*master); |
|---|
| 289 | | *master = -1; |
|---|
| 290 | | return -1; |
|---|
| 291 | | } |
|---|
| 292 | | ioctl(*slave, I_PUSH, "ptem"); /* push ptem */ |
|---|
| 293 | | ioctl(*slave, I_PUSH, "ldterm"); /* push ldterm*/ |
|---|
| 294 | | return 0; |
|---|
| | 278 | /* STREAMS... sigh */ |
|---|
| | 279 | char *slavename; |
|---|
| | 280 | extern char *ptsname(); |
|---|
| | 281 | |
|---|
| | 282 | *master = open("/dev/ptmx", O_RDWR); /* open master */ |
|---|
| | 283 | if(*master < 0) return -1; |
|---|
| | 284 | grantpt(*master); /* change permission of slave */ |
|---|
| | 285 | unlockpt(*master); /* unlock slave */ |
|---|
| | 286 | slavename = ptsname(*master); /* get name of slave */ |
|---|
| | 287 | *slave = open(slavename, O_RDWR); /* open slave */ |
|---|
| | 288 | if(*slave < 0) { |
|---|
| | 289 | close(*master); |
|---|
| | 290 | *master = -1; |
|---|
| | 291 | return -1; |
|---|
| | 292 | } |
|---|
| | 293 | ioctl(*slave, I_PUSH, "ptem"); /* push ptem */ |
|---|
| | 294 | ioctl(*slave, I_PUSH, "ldterm"); /* push ldterm*/ |
|---|
| | 295 | return 0; |
|---|
| 295 | 296 | #endif |
|---|
| 296 | 297 | } |
|---|
| … | … | |
| 320 | 321 | int on = 1; |
|---|
| 321 | 322 | ncct->e = e; |
|---|
| 322 | | if(allocate_pty(&ncct->pty_master, &ncct->pty_slave) || |
|---|
| 323 | | ioctl(ncct->pty_master, FIONBIO, &on)) { |
|---|
| | 323 | if(allocate_pty(&ncct->pty_master, &ncct->pty_slave)) { |
|---|
| 324 | 324 | nc_printf(ncct, "Failed to open pty: %s\n", strerror(errno)); |
|---|
| 325 | 325 | ncct->wants_shutdown = 1; |
|---|
| … | … | |
| 399 | 399 | cmd_buffer[plen] = '\0'; |
|---|
| 400 | 400 | if(cmd_buffer[plen-1] == '\n') cmd_buffer[plen-1] = '\0'; |
|---|
| 401 | | noitL(noit_debug, "IN: '%s'\n", cmd_buffer); |
|---|
| | 401 | noitL(noit_debug, "IN[%d]: '%s'\n", plen, cmd_buffer); |
|---|
| 402 | 402 | noit_console_dispatch(e, cmd_buffer, ncct); |
|---|
| 403 | 403 | free(cmd_buffer); |
|---|
| r1f7cb6f |
r4c963d7 |
|
| 86 | 86 | ac = malloc(sizeof(*ac)); |
|---|
| 87 | 87 | memcpy(ac, listener_closure->dispatch_closure, sizeof(*ac)); |
|---|
| | 88 | salen = sizeof(ac->remote); |
|---|
| 88 | 89 | conn = e->opset->accept(e->fd, &ac->remote.remote_addr, &salen, &newmask, e); |
|---|
| 89 | 90 | if(conn >= 0) { |
|---|
| … | … | |
| 146 | 147 | int8_t family; |
|---|
| 147 | 148 | int sockaddr_len; |
|---|
| 148 | | socklen_t on; |
|---|
| 149 | | long reuse; |
|---|
| | 149 | socklen_t on, reuse; |
|---|
| 150 | 150 | listener_closure_t listener_closure; |
|---|
| 151 | 151 | eventer_t event; |
|---|
| … | … | |
| 187 | 187 | |
|---|
| 188 | 188 | fd = socket(family, type, 0); |
|---|
| 189 | | if(fd < 0) return -1; |
|---|
| | 189 | if(fd < 0) { |
|---|
| | 190 | noitL(noit_stderr, "Cannot create socket: %s\n", strerror(errno)); |
|---|
| | 191 | return -1; |
|---|
| | 192 | } |
|---|
| 190 | 193 | |
|---|
| 191 | 194 | on = 1; |
|---|
| 192 | 195 | if(ioctl(fd, FIONBIO, &on)) { |
|---|
| 193 | 196 | close(fd); |
|---|
| | 197 | noitL(noit_stderr, "Cannot make socket non-blocking: %s\n", |
|---|
| | 198 | strerror(errno)); |
|---|
| 194 | 199 | return -1; |
|---|
| 195 | 200 | } |
|---|
| … | … | |
| 199 | 204 | (void*)&reuse, sizeof(reuse)) != 0) { |
|---|
| 200 | 205 | close(fd); |
|---|
| | 206 | noitL(noit_stderr, "Cannot set SO_REUSEADDR: %s\n", strerror(errno)); |
|---|
| 201 | 207 | return -1; |
|---|
| 202 | 208 | } |
|---|
| re06b23e |
r4c963d7 |
|
| 57 | 57 | #include <unistd.h> |
|---|
| 58 | 58 | #endif |
|---|
| | 59 | #if HAVE_ALLOCA_H |
|---|
| | 60 | #include <alloca.h> |
|---|
| | 61 | #endif |
|---|
| 59 | 62 | #include <limits.h> |
|---|
| 60 | 63 | #include "noitedit/histedit.h" |
|---|