X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Flib%2Fraop.c;h=e59254a81f87f1297deefde9762887316b516126;hb=dd28c44f7f25627039b067c2d4f4b40e6a228ab4;hp=a58e92f4ea05c03c9e724c1ba9e5d46904debe4b;hpb=8e6795779558d2828aef14078fefbcadd5323fa6;p=deb_shairplay.git diff --git a/src/lib/raop.c b/src/lib/raop.c index a58e92f..e59254a 100644 --- a/src/lib/raop.c +++ b/src/lib/raop.c @@ -123,7 +123,10 @@ conn_init(void *opaque, unsigned char *local, int locallen, unsigned char *remot static void conn_request(void *ptr, http_request_t *request, http_response_t **response) { +<<<<<<< HEAD +======= const char realm[] = "airplay"; +>>>>>>> 64d59e3087f829006d091fa0d114efb50972a2bf raop_conn_t *conn = ptr; raop_t *raop = conn->raop; @@ -140,7 +143,13 @@ conn_request(void *ptr, http_request_t *request, http_response_t **response) } res = http_response_init("RTSP/1.0", 200, "OK"); - if (strcmp(method, "OPTIONS") && strlen(raop->password)) { +<<<<<<< HEAD + if (strlen(raop->password)) { +======= + + /* We need authorization for everything else than OPTIONS request */ + if (strcmp(method, "OPTIONS") != 0 && strlen(raop->password)) { +>>>>>>> 64d59e3087f829006d091fa0d114efb50972a2bf const char *authorization; authorization = http_request_get_header(request, "Authorization"); @@ -148,19 +157,31 @@ conn_request(void *ptr, http_request_t *request, http_response_t **response) logger_log(conn->raop->logger, LOGGER_DEBUG, "Our nonce: %s", conn->nonce); logger_log(conn->raop->logger, LOGGER_DEBUG, "Authorization: %s", authorization); } +<<<<<<< HEAD + if (!digest_is_valid("AppleTV", raop->password, conn->nonce, method, http_request_get_url(request), authorization)) { +======= if (!digest_is_valid(realm, raop->password, conn->nonce, method, http_request_get_url(request), authorization)) { +>>>>>>> 64d59e3087f829006d091fa0d114efb50972a2bf char *authstr; int authstrlen; /* Allocate the authenticate string */ +<<<<<<< HEAD + authstrlen = sizeof("Digest realm=\"AppleTV\", nonce=\"\"") + sizeof(conn->nonce) + 1; +======= authstrlen = sizeof("Digest realm=\"\", nonce=\"\"") + sizeof(realm) + sizeof(conn->nonce) + 1; +>>>>>>> 64d59e3087f829006d091fa0d114efb50972a2bf authstr = malloc(authstrlen); /* Concatenate the authenticate string */ memset(authstr, 0, authstrlen); +<<<<<<< HEAD + strcat(authstr, "Digest realm=\"AppleTV\", nonce=\""); +======= strcat(authstr, "Digest realm=\""); strcat(authstr, realm); strcat(authstr, "\", nonce=\""); +>>>>>>> 64d59e3087f829006d091fa0d114efb50972a2bf strcat(authstr, conn->nonce); strcat(authstr, "\"");