<!DOCTYPE html><html><head><title></title><style type="text/css">p.MsoNormal,p.MsoNoSpacing{margin:0}</style></head><body><div>Ok for the set<br></div><div><br></div><div>On Mon, Feb 10, 2020, at 08:22, Rémi Denis-Courmont wrote:<br></div><blockquote type="cite" id="qt"><div>I don't see what can be separated here.<br></div><div><br></div><div class="qt-gmail_quote"><div>Le 10 février 2020 08:55:40 GMT+02:00, Steve Lhomme <robux4@ycbcr.xyz> a écrit :<br></div><blockquote style="margin-top:0pt;margin-right:0pt;margin-bottom:0pt;margin-left:0.8ex;border-left-color:rgb(204, 204, 204);border-left-style:solid;border-left-width:1px;padding-left:1ex;" class="qt-gmail_quote"><pre class="qt-k9mail"><div>On 2020-02-09 14:33, Rémi Denis-Courmont wrote:<br></div><blockquote style="margin-top:0pt;margin-right:0pt;margin-bottom:1ex;margin-left:0.8ex;border-left-color:rgb(114, 159, 207);border-left-style:solid;border-left-width:1px;padding-left:1ex;" class="qt-gmail_quote"><div><hr>  src/stream_output/sap.c | 37 ++++++++++++++++---------------------<br></div><div>  1 file changed, 16 insertions(+), 21 deletions(-)<br></div><div><br></div><div>diff --git a/src/stream_output/sap.c b/src/stream_output/sap.c<br></div><div>index 8e0a29dbec..09c8f9e469 100644<br></div><div>--- a/src/stream_output/sap.c<br></div><div>+++ b/src/stream_output/sap.c<br></div><div>@@ -55,7 +55,7 @@ struct session_descriptor_t<br></div><div>   * control flow algorithm */<br></div><div>  typedef struct sap_address_t<br></div><div>  {<br></div><div>-    struct sap_address_t   *next;<br></div><div>+    struct vlc_list         node;<br></div><div>  <br></div><div>      vlc_thread_t            thread;<br></div><div>      vlc_mutex_t             lock;<br></div><div>@@ -71,7 +71,7 @@ typedef struct sap_address_t<br></div><div>      session_descriptor_t   *first;<br></div><div>  } sap_address_t;<br></div><div>  <br></div><div>-static sap_address_t *sap_addrs = NULL;<br></div><div>+static struct vlc_list sap_addrs = VLC_LIST_INITIALIZER(&sap_addrs);<br></div><div>  static vlc_mutex_t sap_mutex = VLC_STATIC_MUTEX;<br></div><div>  <br></div><div>  #define SAP_MAX_BUFFER 65534<br></div><div>@@ -278,21 +278,18 @@ sout_AnnounceRegisterSDP (vlc_object_t *obj, const char *sdp,<br></div><div>  <br></div><div>      msg_Dbg (obj, "using SAP address: %s", psz_addr);<br></div><div>      vlc_mutex_lock (&sap_mutex);<br></div><div>-    for (sap_addr = sap_addrs; sap_addr; sap_addr = sap_addr->next)<br></div><div>+    vlc_list_foreach (sap_addr, &sap_addrs, node)<br></div><div>          if (!strcmp (psz_addr, sap_addr->group))<br></div><div>-            break;<br></div><div>+            goto matched;<br></div><div>  <br></div><div>+    sap_addr = AddressCreate (obj, psz_addr);<br></div><div>      if (sap_addr == NULL)<br></div><div>      {<br></div><div>-        sap_addr = AddressCreate (obj, psz_addr);<br></div><div>-        if (sap_addr == NULL)<br></div><div>-        {<br></div><div>-            vlc_mutex_unlock (&sap_mutex);<br></div><div>-            return NULL;<br></div><div>-        }<br></div><div>-        sap_addr->next = sap_addrs;<br></div><div>-        sap_addrs = sap_addr;<br></div><div>+        vlc_mutex_unlock(&sap_mutex);<br></div><div>+        return NULL;<br></div><div>      }<br></div><div>+matched:<br></div><div>+    vlc_list_append(&sap_addr->node, &sap_addrs);<br></div><div>      /* Switch locks.<br></div><div>       * NEVER take the global SAP lock when holding a SAP thread lock! */<br></div><div>      vlc_mutex_lock (&sap_addr->lock);<br></div><div>@@ -372,17 +369,14 @@ out:<br></div><div>   */<br></div><div>  void sout_AnnounceUnRegister (vlc_object_t *obj, session_descriptor_t *session)<br></div><div>  {<br></div><div>-    sap_address_t *addr, **paddr;<br></div><div>-    session_descriptor_t **psession;<br></div><div>+    sap_address_t *addr;<br></div><div>+    session_descriptor_t **psession = NULL;<br></div><div>  <br></div><div>      msg_Dbg (obj, "removing SAP session");<br></div><div>      vlc_mutex_lock (&sap_mutex);<br></div><div>-    paddr = &sap_addrs;<br></div><div>-    for (;;)<br></div><div>-    {<br></div><div>-        addr = *paddr;<br></div><div>-        assert (addr != NULL);<br></div><div>  <br></div><div>+    vlc_list_foreach (addr, &sap_addrs, node)<br></div><div>+    {<br></div><div>          psession = &addr->first;<br></div><div>          vlc_mutex_lock (&addr->lock);<br></div><div>          while (*psession != NULL)<br></div><div>@@ -392,15 +386,16 @@ void sout_AnnounceUnRegister (vlc_object_t *obj, session_descriptor_t *session)<br></div><div>              psession = &(*psession)->next;<br></div><div>          }<br></div><div>          vlc_mutex_unlock (&addr->lock);<br></div><div>-        paddr = &addr->next;<br></div><div>      }<br></div><div>  <br></div><div>+    vlc_assert_unreachable();<br></div></blockquote><div><br></div><div>This could be a separate patch. Combined with the psession init.<br></div><div><br></div><blockquote style="margin-top:0pt;margin-right:0pt;margin-bottom:1ex;margin-left:0.8ex;border-left-color:rgb(114, 159, 207);border-left-style:solid;border-left-width:1px;padding-left:1ex;" class="qt-gmail_quote"><div>+<br></div><div>  found:<br></div><div>      *psession = session->next;<br></div><div>  <br></div><div>      if (addr->first == NULL)<br></div><div>          /* Last session for this address -> unlink the address */<br></div><div>-        *paddr = addr->next;<br></div><div>+        vlc_list_remove(&addr->node);<br></div><div>      vlc_mutex_unlock (&sap_mutex);<br></div><div>  <br></div><div>      if (addr->first == NULL)<br></div><div>-- <br></div><div>2.25.0<hr>vlc-devel mailing list<br></div><div>To unsubscribe or modify your subscription options:<br></div><div><a href="https://mailman.videolan.org/listinfo/vlc-devel">https://mailman.videolan.org/listinfo/vlc-devel</a><br></div></blockquote><div><hr>vlc-devel mailing list<br></div><div>To unsubscribe or modify your subscription options:<br></div><div><a href="https://mailman.videolan.org/listinfo/vlc-devel">https://mailman.videolan.org/listinfo/vlc-devel</a><br></div></pre></blockquote></div><div><br></div><div>-- <br></div><div>Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté. <br></div><div>_______________________________________________<br></div><div>vlc-devel mailing list<br></div><div>To unsubscribe or modify your subscription options:<br></div><div>https://mailman.videolan.org/listinfo/vlc-devel<br></div></blockquote></body></html>