diff --git a/stream/dap_stream.c b/stream/dap_stream.c
index 5b06c950f2a4c00aa8ebc3de21f8576271493dd2..238e0a5ff1cde23062dcc920dcc0107e209f38f0 100755
--- a/stream/dap_stream.c
+++ b/stream/dap_stream.c
@@ -168,6 +168,9 @@ void stream_headers_read(dap_http_client_t * cl_ht, void * arg)
                 if(dap_stream_session_open(ss)==0){ // Create new stream
                     dap_stream_t * sid = stream_new(cl_ht);
                     sid->session=ss;
+                    dap_http_header_t *header = dap_http_header_find(cl_ht->in_headers, "Service-Key");
+                    if (header)
+                        sid->service_key = strdup(header->value);
                     size_t count_channels = strlen(ss->active_channels);
                     for(size_t i = 0; i < count_channels; i++) {
                         dap_stream_ch_new(sid, ss->active_channels[i]);
diff --git a/stream/dap_stream.h b/stream/dap_stream.h
index 2a149cc58b4325a3e7bc13015fafd4411768e6a4..1fe18072490fcd620e4a224d9a45ca0ceb86b679 100755
--- a/stream/dap_stream.h
+++ b/stream/dap_stream.h
@@ -83,6 +83,8 @@ typedef struct dap_stream {
     dap_stream_ch_t * channel[255]; // TODO reduce channels to 16 to economy memory
     size_t channel_count;
 
+    char *service_key;
+
     size_t frame_sent; // Frame counter
 
     size_t seq_id;
diff --git a/stream/dap_stream_ctl.c b/stream/dap_stream_ctl.c
index e4095d6362f399e4c67f43b6e8a70bb23bd3c802..f4038a9e0fba56060839d699f52de73a9a5d1766 100755
--- a/stream/dap_stream_ctl.c
+++ b/stream/dap_stream_ctl.c
@@ -111,6 +111,7 @@ void stream_ctl_proc(struct dap_http_simple *cl_st, void * arg)
             l_new_session = true;
         }
         else if(strcmp(dg->url_path, "socket_forward" ) == 0) {
+            l_channels_str[0]  = '\0';
             l_new_session = true;
         }
         /* }else if (strcmp(dg->url_path,"stream_ctl")==0) {