Changeset 3205:eade78a7d3fc in roaraudio for libroareio/ff_ssdp.c
- Timestamp:
- 01/24/10 04:15:10 (14 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libroareio/ff_ssdp.c
r3204 r3205 25 25 #include "libroareio.h" 26 26 27 static char * _sd (char * str) { 28 ssize_t len = strlen(str) + 1; 29 char * ret = roar_mm_malloc(len); 30 31 memcpy(ret, str, len); 32 33 return ret; 34 } 35 36 void roar_ff_ssdp_init (struct roar_ff_ssdp * c) { 37 memset(c, 0, sizeof(struct roar_ff_ssdp)); 38 39 c->method = ROAR_FF_SSDP_M_NOTIFY; 40 c->server = _sd("RoarAudio libroareio/ff_ssdp.c"); 41 c->max_age = 1800; 42 c->location = NULL; 43 c->nt = NULL; 44 c->usn = NULL; 45 c->usn_nt_suffix = 1; 46 c->host = _sd(ROAR_FF_SSDP_HOST_UPNP); 47 } 48 49 void roar_ff_ssdp_free (struct roar_ff_ssdp * c) { 50 if ( c->server != NULL ) 51 roar_mm_free(c->server); 52 53 if ( c->location != NULL ) 54 roar_mm_free(c->location); 55 56 if ( c->nt != NULL ) 57 roar_mm_free(c->nt); 58 59 if ( c->usn != NULL ) 60 roar_mm_free(c->usn); 61 62 if ( c->host != NULL ) 63 roar_mm_free(c->host); 64 65 memset(c, 0, sizeof(struct roar_ff_ssdp)); 66 } 67 68 int roar_ff_ssdp_write(struct roar_vio_calls * vio, struct roar_ff_ssdp * c) { 69 char * met; 70 char * nts; 71 72 switch (c->method) { 73 case ROAR_FF_SSDP_M_NOTIFY: met = ROAR_FF_SSDP_MS_NOTIFY; break; 74 case ROAR_FF_SSDP_M_M_SEARCH: met = ROAR_FF_SSDP_MS_M_SEARCH; break; 75 default: return -1; 76 } 77 78 switch (c->nst) { 79 case ROAR_FF_SSDP_A_ALIVE: nts = ROAR_FF_SSDP_AS_ALIVE; break; 80 case ROAR_FF_SSDP_A_BYEBYE: nts = ROAR_FF_SSDP_AS_BYEBYE; break; 81 default: return -1; 82 } 83 84 roar_vio_printf(vio, "%s * HTTP/1.1\r\n", met); 85 roar_vio_printf(vio, "SERVER: %s\r\n", c->server); 86 roar_vio_printf(vio, "CACHE-CONTROL: max-age=%i\r\n", c->max_age); 87 roar_vio_printf(vio, "LOCATION: %s\r\n", c->location); 88 roar_vio_printf(vio, "NTS: %s\r\n", nts); 89 roar_vio_printf(vio, "NT: %s\r\n", c->nt); 90 91 if ( c->usn_nt_suffix ) { 92 roar_vio_printf(vio, "USN: %s::%s\r\n", c->usn, c->nt); 93 } else { 94 roar_vio_printf(vio, "USN: %s\r\n", c->usn); 95 } 96 97 roar_vio_printf(vio, "HOST: %s\r\n", c->host); 98 roar_vio_printf(vio, "\r\n"); 99 100 return 0; 101 } 102 int roar_ff_ssdp_read (struct roar_vio_calls * vio, struct roar_ff_ssdp * c) { 103 return -1; 104 } 105 106 27 107 //ll
Note: See TracChangeset
for help on using the changeset viewer.