Changeset 831:38475738cd72 in roaraudio for libroar/socket.c


Ignore:
Timestamp:
09/27/08 01:15:12 (16 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

added working support for HTTP CONNECT proxy

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroar/socket.c

    r830 r831  
    728728 
    729729int roar_socket_open_http   (int mode, int fh, char * host, int port) { 
    730  return -1; 
     730 char buf[1024]; 
     731 int len; 
     732 
     733 if ( port == 0 || host == NULL ) 
     734  return -1; 
     735 
     736 if ( *host == '/' ) // AF_UNIX 
     737  return -1; 
     738 
     739 if ( (len = snprintf(buf, 1024, "CONNECT %s:%i HTTP/1.0\r\nUser-Agent: libroar\r\n\r\n", host, port)) == -1 ) 
     740  return -1; 
     741 
     742 if ( write(fh, buf, len) != len ) 
     743  return -1; 
     744 
     745 while ( (len = read(fh, buf, 1024)) ) { 
     746  if ( len == 1024 ) { // overlong lion 
     747   return -1; 
     748  } else if ( len == 2 && buf[0] == '\r' && buf[1] == '\n' ) { 
     749   break; 
     750  } else if ( len == 1 && (buf[0] == '\r' || buf[0] == '\n') ) { // bad proxy or devel trying to debug ;) 
     751   break; 
     752  } else if ( len >= 4 && buf[len-4] == '\r' && buf[len-3] == '\n' && buf[len-2] == '\r' && buf[len-1] == '\n' ) { 
     753   break; 
     754  } 
     755 } 
     756 
     757 return 0; 
    731758} 
    732759 
Note: See TracChangeset for help on using the changeset viewer.