- xbt_dynar_foreach(sockets,cursor,sock_iter) {
- if (sock == sock_iter) {
- xbt_dynar_cursor_rm(sockets,&cursor);
- if (sock->plugin->socket_close)
- (* sock->plugin->socket_close)(sock);
-
- /* free the memory */
- if (sock->peer_name)
- free(sock->peer_name);
- free(sock);
- XBT_OUT;
- return;
- }
+ /* FIXME: Cannot get the dynar mutex, because it can be already locked */
+// _xbt_dynar_foreach(sockets,cursor,sock_iter) {
+ for (cursor=0; cursor< xbt_dynar_length(sockets); cursor++) {
+ _xbt_dynar_cursor_get(sockets,&cursor,&sock_iter);
+ if (sock == sock_iter) {
+ DEBUG2("remove sock cursor %d dize %lu\n",cursor,xbt_dynar_length(sockets));
+ xbt_dynar_cursor_rm(sockets,&cursor);
+ if (sock->plugin->socket_close)
+ (* sock->plugin->socket_close)(sock);
+
+ /* free the memory */
+ if (sock->peer_name)
+ free(sock->peer_name);
+ free(sock);
+ XBT_OUT;
+ return;
+ }