+
+ /*
+ * mirror instance name... defaults to "", but if URL includes
+ * "?mirror=xxx", will be "xxx"
+ */
+
+ name[0] = '\0';
+ lws_get_urlarg_by_name(wsi, "mirror", name, sizeof(name) - 1);
+
+ lwsl_notice("mirror %s\n", name);
+
+ /* is there already a mirror instance of this name? */
+
+ mi = v->mi_list;
+ while (mi) {
+ if (!strcmp(name, mi->name)) {
+ lwsl_notice("Joining existing mi %p '%s'\n",
+ mi, name);
+ /* yes... we will join it */
+ break;
+ }
+ count_mi++;
+ mi = mi->next;
+ }
+
+ if (!mi) {
+
+ /* no existing mirror instance for name */
+
+ if (count_mi == MAX_MIRROR_INSTANCES)
+ return -1;
+
+ /* create one with this name, and join it */
+
+ mi = malloc(sizeof(*mi));
+ memset(mi, 0, sizeof(*mi));
+ mi->next = v->mi_list;
+ v->mi_list = mi;
+ strcpy(mi->name, name);
+ mi->ringbuffer_head = 0;
+
+
+ lwsl_notice("Created new mi %p '%s'\n", mi, name);
+ }
+
+ /* add our pss to list of guys bound to this mi */
+
+ pss->same_mi_pss_list = mi->same_mi_pss_list;
+ mi->same_mi_pss_list = pss;
+
+ /* init the pss */
+
+ pss->mi = mi;
+ pss->ringbuffer_tail = mi->ringbuffer_head;