Changeset 1349:9582e89c7130 in roaraudio
- Timestamp:
- 03/23/09 18:13:26 (15 years ago)
- Branch:
- default
- Phase:
- public
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
include/libroar/vio_dstr.h
r1333 r1349 89 89 #define ROAR_VIO_DSTR_OBJT_HTTP ROAR_VIO_DSTR_OBJT_HTTP11 90 90 #define ROAR_VIO_DSTR_OBJT_GOPHER (0x21|ROAR_VIO_DSTR_OBJGT_PROTO) 91 #define ROAR_VIO_DSTR_OBJT_GOPHER_PLUS (0x22|ROAR_VIO_DSTR_OBJGT_PROTO) 91 92 92 93 /* -
include/libroar/vio_proto.h
r1347 r1349 38 38 #include "libroar.h" 39 39 40 struct roar_vio_defaults; 41 42 #define ROAR_VIO_PROTO_P_NONE 0 43 #define ROAR_VIO_PROTO_P_HTTP 1 44 #define ROAR_VIO_PROTO_P_GOPHER 2 45 46 int roar_vio_proto_init_def (struct roar_vio_defaults * def, char * dstr, int proto, struct roar_vio_defaults * odef); 47 48 int roar_vio_open_proto (struct roar_vio_calls * calls, struct roar_vio_calls * dst, 49 char * dstr, int proto, struct roar_vio_defaults * odef); 50 51 int roar_vio_open_proto_http (struct roar_vio_calls * calls, struct roar_vio_calls * dst, char * host, char * file); 52 int roar_vio_open_proto_gopher (struct roar_vio_calls * calls, struct roar_vio_calls * dst, char * host, char * file); 40 53 #endif 41 54 -
libroar/vio_dstr.c
r1337 r1349 96 96 {ROAR_VIO_DSTR_OBJT_GOPHER, "gopher", 97 97 {ROAR_VIO_DEF_TYPE_EOL}}, 98 {ROAR_VIO_DSTR_OBJT_GOPHER_PLUS,"gopher+", 99 {ROAR_VIO_DEF_TYPE_EOL}}, 98 100 99 101 {ROAR_VIO_DSTR_OBJT_GZIP, "gzip", … … 496 498 break; 497 499 #endif 500 case ROAR_VIO_DSTR_OBJT_HTTP09: 501 case ROAR_VIO_DSTR_OBJT_HTTP10: 502 case ROAR_VIO_DSTR_OBJT_HTTP11: 503 c->need_vio = 1; 504 next->def = &(next->store_def); 505 506 if ( roar_vio_proto_init_def(next->def, c->dst, ROAR_VIO_PROTO_P_HTTP, c->def) == -1 ) 507 return -1; 508 break; 509 case ROAR_VIO_DSTR_OBJT_GOPHER: 510 case ROAR_VIO_DSTR_OBJT_GOPHER_PLUS: 511 c->need_vio = 1; 512 next->def = &(next->store_def); 513 514 if ( roar_vio_proto_init_def(next->def, c->dst, ROAR_VIO_PROTO_P_GOPHER, c->def) == -1 ) 515 return -1; 516 break; 498 517 default: 499 518 return -1; … … 501 520 502 521 if ( next != NULL ) { 503 ROAR_ DBG("roar_vio_dstr_set_defaults(*): i=%i, c->type=0x%.4x(%s): next->def=%p, next->def->type=%i", i,522 ROAR_WARN("roar_vio_dstr_set_defaults(*): i=%i, c->type=0x%.4x(%s): next->def=%p, next->def->type=%i", i, 504 523 c->type & 0xFFFF, roar_vio_dstr_get_name(c->type), 505 524 next->def, next->def == NULL ? -1 : next->def->type); 525 if ( next->def != NULL ) { 526 ROAR_WARN("roar_vio_dstr_set_defaults(*): i=%i, c->type=0x%.4x(%s): next->def->o_flags=%i", i, 527 c->type & 0xFFFF, roar_vio_dstr_get_name(c->type), 528 next->def->o_flags); 529 } 506 530 } else { 507 ROAR_ DBG("roar_vio_dstr_set_defaults(*): i=%i, c->type=0x%.4x(%s): next=NULL", i,531 ROAR_WARN("roar_vio_dstr_set_defaults(*): i=%i, c->type=0x%.4x(%s): next=NULL", i, 508 532 c->type & 0xFFFF, roar_vio_dstr_get_name(c->type)); 509 533 } … … 558 582 559 583 for (i = 0; (c = &chain[i])->type != ROAR_VIO_DSTR_OBJT_EOL; i++) { 584 ROAR_WARN("roar_vio_dstr_build_chain(*): i=%i, c->type=0x%.4x(%s): need_vio=%i", i, 585 c->type & 0xFFFF, roar_vio_dstr_get_name(c->type), c->need_vio); 586 560 587 if ( c->need_vio ) { 561 588 if ( (tc = malloc(sizeof(struct roar_vio_calls))) == NULL ) { … … 572 599 } 573 600 601 574 602 switch (c->type) { 575 603 case ROAR_VIO_DSTR_OBJT_PASS: … … 591 619 case ROAR_VIO_DSTR_OBJT_PGP: 592 620 if ( roar_vio_open_pgp_decrypt(tc, prev, NULL) == -1 ) { 621 _ret(-1); 622 } 623 break; 624 case ROAR_VIO_DSTR_OBJT_HTTP09: 625 case ROAR_VIO_DSTR_OBJT_HTTP10: 626 case ROAR_VIO_DSTR_OBJT_HTTP11: 627 ROAR_WARN("roar_vio_dstr_build_chain(*): HTTP*"); 628 if ( roar_vio_open_proto(tc, prev, c->dst, ROAR_VIO_PROTO_P_HTTP, i == 0 ? NULL : chain[i-1].def) == -1 ) { 629 _ret(-1); 630 } 631 break; 632 case ROAR_VIO_DSTR_OBJT_GOPHER: 633 case ROAR_VIO_DSTR_OBJT_GOPHER_PLUS: 634 ROAR_WARN("roar_vio_dstr_build_chain(*): GOPHER*"); 635 if ( roar_vio_open_proto(tc, prev, c->dst, ROAR_VIO_PROTO_P_GOPHER, i == 0 ? NULL : chain[i-1].def) == -1 ) { 593 636 _ret(-1); 594 637 } -
libroar/vio_proto.c
r1347 r1349 35 35 #include "libroar.h" 36 36 37 int roar_vio_proto_init_def (struct roar_vio_defaults * def, char * dstr, int proto, struct roar_vio_defaults * odef) { 38 int port = 0; 39 int ret; 40 char * ed; 41 42 if ( def == NULL ) 43 return -1; 44 45 switch (proto) { 46 case ROAR_VIO_PROTO_P_HTTP: port = 80; break; 47 case ROAR_VIO_PROTO_P_GOPHER: port = 70; break; 48 default: 49 return -1; 50 } 51 52 if ( roar_vio_dstr_init_defaults(def, ROAR_VIO_DEF_TYPE_SOCKET, O_RDWR, 0644) == -1 ) 53 return -1; 54 55 if ( roar_vio_socket_init_tcp4_def(def, "localhost", port) == -1 ) 56 return -1; 57 58 if ( !strncmp(dstr, "//", 2) ) 59 dstr += 2; 60 61 if ( (ed = strstr(dstr, "/")) != NULL ) 62 *ed = 0; 63 64 ret = roar_vio_socket_init_dstr_def(def, dstr, -1, SOCK_STREAM, def); 65 66 if ( ed != NULL ) 67 *ed = '/'; 68 69 return ret; 70 } 71 72 int roar_vio_open_proto (struct roar_vio_calls * calls, struct roar_vio_calls * dst, 73 char * dstr, int proto, struct roar_vio_defaults * odef) { 74 char * host; 75 char * tmp; 76 77 ROAR_WARN("roar_vio_open_proto(calls=%p, dst=%p, dstr='%s', proto=%i, odef=%p) = ?", calls, dst, dstr, proto, odef); 78 79 if ( calls == NULL || dst == NULL || dstr == NULL ) 80 return -1; 81 82 ROAR_DBG("roar_vio_open_proto(*) = ?"); 83 84 if ( roar_vio_open_pass(calls, dst) == -1 ) 85 return -1; 86 87 dstr += 2; 88 host = dstr; 89 90 if ( (tmp = strstr(dstr, "/")) == NULL ) 91 return -1; 92 93 *tmp++ = 0; 94 dstr = tmp; 95 96 if ( (tmp = strstr(dstr, "#")) != NULL ) 97 *tmp = 0; 98 99 ROAR_DBG("roar_vio_open_proto(*) = ?"); 100 101 switch (proto) { 102 case ROAR_VIO_PROTO_P_HTTP: 103 return roar_vio_open_proto_http(calls, dst, host, dstr); 104 break; 105 case ROAR_VIO_PROTO_P_GOPHER: 106 return roar_vio_open_proto_gopher(calls, dst, host, dstr); 107 break; 108 } 109 110 return -1; 111 } 112 113 int roar_vio_open_proto_http (struct roar_vio_calls * calls, struct roar_vio_calls * dst, char * host, char * file) { 114 return -1; 115 } 116 117 int roar_vio_open_proto_gopher (struct roar_vio_calls * calls, struct roar_vio_calls * dst, char * host, char * file) { 118 int len; 119 120 if ( calls == NULL || dst == NULL || host == NULL || file == NULL ) 121 return -1; 122 123 ROAR_DBG("roar_vio_open_proto_gopher(calls=%p, dst=%p, host='%s', file='%s') = ?", calls, dst, host, file); 124 125 len = strlen(file); 126 127 if ( roar_vio_write(dst, file, len) != len ) 128 return -1; 129 130 if ( roar_vio_write(dst, "\n", 1) != 1 ) 131 return -1; 132 133 roar_vio_sync(dst); // for encryption/compression layers 134 135 return 0; 136 } 137 37 138 //ll -
libroar/vio_socket.c
r1348 r1349 200 200 if ( hint == -1 && odef != NULL ) { // if we still don't know what this is we try 201 201 // to use the parent objects request 202 ROAR_WARN("roar_vio_socket_init_dstr_def(*): hint=-1 && odef!=NULL"); 202 203 if ( odef->type == ROAR_VIO_DEF_TYPE_SOCKET ) { 204 ROAR_WARN("roar_vio_socket_init_dstr_def(*): hint=-1 && odef!=NULL, using hint from odef"); 203 205 hint = odef->d.socket.domain; 204 206 } … … 411 413 int roar_vio_socket_init_inet4host_def(struct roar_vio_defaults * def) { 412 414 struct hostent * he; 415 char * ed; 413 416 414 417 if ( def == NULL ) … … 417 420 if ( def->d.socket.host == NULL ) 418 421 return -1; 422 423 if ( (ed = strstr(def->d.socket.host, "/")) != NULL ) 424 *ed = 0; 419 425 420 426 if ( (he = gethostbyname(def->d.socket.host)) == NULL ) { 421 427 ROAR_ERR("roar_vio_socket_init_inet4host_def(*): Can\'t resolve host name '%s'", 422 428 def->d.socket.host); 423 return -1; 424 } 429 if ( ed != NULL ) *ed = '/'; 430 return -1; 431 } 432 433 if ( ed != NULL ) *ed = '/'; 425 434 426 435 memcpy((struct in_addr *)&def->d.socket.sa.in.sin_addr, he->h_addr, sizeof(struct in_addr));
Note: See TracChangeset
for help on using the changeset viewer.