[Ur] race condition in urweb-email

Marko Schütz Schmuck markoschuetz at googlemail.com
Tue May 2 14:01:10 EDT 2017


I'm seeing a race condition using urweb-email.

An example is attached below.

On the console I see the three TO: addresses reported by Mail.to and
then the three mails are sent with the last of the three addresses.

Should Mail.from, Mail.subject and friends yield transaction header?

Best regards,

Marko
-------------- next part --------------

fun solicitText (user : string) : transaction string
  = key <- rand;
    pass <- return (show key);
    return ("Dear ...,\n\n" ^
            "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc pellentesque porta" ^
            "congue. Proin quis est est. Pellentesque facilisis at arcu a bibendum. Curabitur" ^
            "non sapien quis felis tincidunt pulvinar. Curabitur id orci augue. Mauris auctor" ^
            "augue non nisi ornare elementum. Aenean scelerisque urna at nulla interdum cursus." ^
            "Nunc finibus augue nunc, eu sodales augue lobortis in. Nullam sed molestie eros." ^
            "Aenean ullamcorper tellus turpis, vel efficitur eros pellentesque ut. Morbi vitae" ^
            "porta ex, ut aliquam urna. Nunc fringilla velit diam, eget convallis felis iaculis" ^
            "in.\n" ^
            "Donec varius, augue vitae maximus laoreet, est erat laoreet lectus, id convallis" ^
            "velit lectus a leo. Etiam id luctus quam. Nunc et imperdiet libero. Vivamus sit amet" ^
            "urna sit amet ipsum efficitur pretium quis in neque. Suspendisse quam magna," ^
            "pharetra auctor vestibulum sit amet, ultrices in dolor. Donec in dapibus nulla, sit" ^
            "amet ornare augue. Etiam commodo lacus tellus, sed gravida ligula varius" ^
            "eu. Maecenas ante dolor, sagittis ut commodo ut, condimentum ac augue. Aenean" ^
            "facilisis pellentesque tellus, nec molestie enim feugiat non. Curabitur ipsum augue," ^
            "efficitur eget scelerisque id, rhoncus eget enim. Cras bibendum blandit leo, et" ^
            "sagittis risus commodo sed. Praesent consectetur nulla ut porttitor blandit. Nunc" ^
            "pretium dictum libero, vel lobortis mi tempus eget. Aenean hendrerit ultricies mi," ^
            "in semper velit accumsan a.\n" ^
            "Im futrem usume " ^ show pass ^ "\n\n" ^
            "Sincerely,\n\n" ^
            "Your System.\n"
            )

val sendOneMail (from : string) (to : string) (subject : string) (text : string) : transaction unit
  = Mail.send (Mail.subject subject
                            (Mail.to to
                                     (Mail.from from
                                                Mail.empty
                                     )
                            )
              )
              text
              None

val sendMails : transaction unit
  = users <- return ("urweb.test1 at mailinator.com" :: "urweb.test2 at mailinator.com" :: "urweb.test3 at mailinator.com" :: []);
    List.app
        (fn user =>
            text <- solicitText user;
            sendOneMail "MarkoSchuetz at gmail.com" user "soliciting your data" text
        )
        users

fun main () : transaction page
  = sendMails;
    return <xml>Sent</xml>
-------------- next part --------------
library ..
rewrite url Multiple/*
allow url main
safeGet main
prefix http://localhost:8080/

$/list

multiple
-------------- next part --------------
val sendMails : transaction unit
val main : unit -> transaction page
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 181 bytes
Desc: OpenPGP Digital Signature
URL: <http://www.impredicative.com/pipermail/ur/attachments/20170502/60bc6e17/attachment.sig>


More information about the Ur mailing list