Changeset 5367:b2aae2f6b2d7 in roaraudio for libroar


Ignore:
Timestamp:
12/20/11 05:26:54 (10 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

Added VIO/DSTR for SOCKS proxy (See: #187)

Location:
libroar
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • libroar/Makefile

    r5317 r5367  
    77VIO_META=vio.o vio_select.o vio_ops.o vio_string.o 
    88VIO_BRIDGE=vio_bio.o vio_stdio.o 
    9 VIO=$(VIO_META) $(VIO_BRIDGE) vio_cmd.o vio_magic.o vio_pipe.o vio_socket.o vio_winsock.o vio_stack.o vio_jumbo.o vio_proto.o vio_dstr.o vio_tantalos.o vio_rtp.o vio_buffer.o vio_buffer_store.o vio_stdvios.o vio_misc.o vio_zlib.o vio_stream.o 
     9VIO=$(VIO_META) $(VIO_BRIDGE) vio_cmd.o vio_magic.o vio_pipe.o vio_socket.o vio_winsock.o vio_stack.o vio_jumbo.o vio_proto.o vio_dstr.o vio_tantalos.o vio_rtp.o vio_buffer.o vio_buffer_store.o vio_stdvios.o vio_misc.o vio_zlib.o vio_stream.o vio_proxy.o 
    1010HASHES=hash.o hash_tiger.o 
    1111PASSWORD=passwordapi.o pinentry.o sshaskpass.o 
  • libroar/vio_dstr.c

    r5282 r5367  
    4141 const char * name; 
    4242 int (* setdef) (struct roar_vio_dstr_chain * cur,   struct roar_vio_dstr_chain * next); 
    43  int (* openvio)(struct roar_vio_calls      * calls, struct roar_vio_calls      * dst, struct roar_vio_dstr_chain * cur); 
     43 int (* openvio)(struct roar_vio_calls      * calls, struct roar_vio_calls      * dst, struct roar_vio_dstr_chain * cur, struct roar_vio_dstr_chain * next); 
    4444 int    pdeftype[16]; 
    4545} _roar_vio_dstr_objs[] = { 
     
    105105 
    106106 {ROAR_VIO_DSTR_OBJT_SOCKS,      "socks", 
    107       NULL, NULL, 
     107      roar_vio_proxy_setdef, roar_vio_proxy_openvio, 
    108108      {ROAR_VIO_DEF_TYPE_EOL}}, 
    109109 {ROAR_VIO_DSTR_OBJT_SOCKS4,     "socks4", 
    110       NULL, NULL, 
     110      roar_vio_proxy_setdef, roar_vio_proxy_openvio, 
    111111      {ROAR_VIO_DEF_TYPE_EOL}}, 
    112112 {ROAR_VIO_DSTR_OBJT_SOCKS4A,    "socks4a", 
    113       NULL, NULL, 
     113      roar_vio_proxy_setdef, roar_vio_proxy_openvio, 
    114114      {ROAR_VIO_DEF_TYPE_EOL}}, 
    115115 {ROAR_VIO_DSTR_OBJT_SOCKS4D,    "socks4d", 
    116       NULL, NULL, 
     116      roar_vio_proxy_setdef, roar_vio_proxy_openvio, 
    117117      {ROAR_VIO_DEF_TYPE_EOL}}, 
    118118 {ROAR_VIO_DSTR_OBJT_SOCKS5,     "socks5", 
    119       NULL, NULL, 
     119      roar_vio_proxy_setdef, roar_vio_proxy_openvio, 
    120120      {ROAR_VIO_DEF_TYPE_EOL}}, 
    121121 {ROAR_VIO_DSTR_OBJT_SSH,        "ssh", 
    122       NULL, NULL, 
     122      roar_vio_proxy_setdef, roar_vio_proxy_openvio, 
    123123      {ROAR_VIO_DEF_TYPE_EOL}}, 
    124124 
     
    265265                                    int (*openvio)(struct roar_vio_calls      * calls, 
    266266                                                   struct roar_vio_calls      * dst, 
    267                                                    struct roar_vio_dstr_chain * cur)) { 
     267                                                   struct roar_vio_dstr_chain * cur, 
     268                                                   struct roar_vio_dstr_chain * next)) { 
    268269 struct _roar_vio_dstr_type * ret; 
    269270 
     
    362363 switch (def->type) { 
    363364  case ROAR_VIO_DEF_TYPE_NONE: 
     365    ROAR_DBG("roar_vio_open_default(calls=%p, def=%p, opts='%s'): def->type=%i, dummy open", calls, def, opts, (int)def->type); 
    364366   break; 
    365367#ifdef ROAR_HAVE_IO_POSIX 
    366368  case ROAR_VIO_DEF_TYPE_FILE: 
     369    ROAR_DBG("roar_vio_open_default(calls=%p, def=%p, opts='%s'): def->type=%i, file open", calls, def, opts, (int)def->type); 
    367370    if ( _open_file(calls, def->d.file, def->o_flags, def->o_mode) == -1 ) { 
    368371     ROAR_DBG("roar_vio_open_default(*): Can not open file: %i", roar_error); 
     
    372375#endif 
    373376  case ROAR_VIO_DEF_TYPE_SOCKET: 
     377    ROAR_DBG("roar_vio_open_default(calls=%p, def=%p, opts='%s'): def->type=%i, socket open", calls, def, opts, (int)def->type); 
    374378     if ( roar_vio_open_def_socket(calls, def, opts) == -1 ) 
    375379      return -1; 
    376380   break; 
    377381  case ROAR_VIO_DEF_TYPE_FH: 
     382    ROAR_DBG("roar_vio_open_default(calls=%p, def=%p, opts='%s'): def->type=%i, fh open", calls, def, opts, (int)def->type); 
    378383    if ( roar_vio_open_fh(calls, def->d.fh) == -1 ) 
    379384     return -1; 
    380385   break; 
    381386  case ROAR_VIO_DEF_TYPE_SOCKETFH: 
     387    ROAR_DBG("roar_vio_open_default(calls=%p, def=%p, opts='%s'): def->type=%i, socket fh open", calls, def, opts, (int)def->type); 
    382388    if ( roar_vio_open_fh_socket(calls, def->d.fh) == -1 ) 
    383389     return -1; 
    384390   break; 
    385391  default: 
     392    ROAR_DBG("roar_vio_open_default(calls=%p, def=%p, opts='%s') = -1 // error=NOTSUP", calls, def, opts, (int)def->type); 
    386393    roar_err_set(ROAR_ERROR_NOTSUP); 
    387394    return -1; 
     
    849856 } 
    850857 
    851  for (i = 0; (c = &chain[i])->type != ROAR_VIO_DSTR_OBJT_EOL; i++) { 
    852   ROAR_DBG("roar_vio_dstr_build_chain(*): i=%i, c->type=0x%.4x(%s): need_vio=%i, def->o_flags=%i", i, 
    853                    c->type & 0xFFFF, roar_vio_dstr_get_name(c->type), c->need_vio, c->def->o_flags); 
     858 for (i = 0; (c = &(chain[i]))->type != ROAR_VIO_DSTR_OBJT_EOL; i++) { 
     859  ROAR_DBG("roar_vio_dstr_build_chain(*): i=%i, c->type=0x%.4x(%s): need_vio=%i, def(%p)->o_flags=%i", i, 
     860                   c->type & 0xFFFF, roar_vio_dstr_get_name(c->type), c->need_vio, c->def, c->def != NULL ? c->def->o_flags : -1); 
    854861 
    855862  if ( c->need_vio ) { 
     
    881888#ifdef ROAR_HAVE_LIBZ 
    882889    case ROAR_VIO_DSTR_OBJT_GZIP: 
    883       //if ( roar_vio_open_gzip(tc, prev, -1) == -1 ) { 
    884890      if ( roar_vio_open_zlib(tc, prev, -1, 1) == -1 ) { 
    885891       _ret(-1); 
     
    887893     break; 
    888894    case ROAR_VIO_DSTR_OBJT_ZLIB: 
    889       //if ( roar_vio_open_gzip(tc, prev, -1) == -1 ) { 
    890895      if ( roar_vio_open_zlib(tc, prev, -1, 0) == -1 ) { 
    891896       _ret(-1); 
     
    960965      } 
    961966 
    962       if ( type->openvio(tc, prev, c) == -1 ) { 
     967      if ( type->openvio(tc, prev, c, &(chain[i+1])) == -1 ) { 
    963968       _ret(-1); 
    964969      } 
Note: See TracChangeset for help on using the changeset viewer.