{"shas":[["f3886edcc1628be0734f794c44477275e5a2ed27","78166c9f658faa0027cb8535eab9195aedb52f98@deepsky.com","The defcfun* macro is used to setup a bunch of cffi calls into the\nzeromq library, and to provide lisp wrapper functions for each of\nthose cfuns at the same time. Since at least zmq 2.1.x zeromq does not\nautomagically handle EINTR anymore, which means it gets propagated\ninto the lisp world above the c library dumping almost all of the\nexample code into the debugger. The defcfun* macro is big and hairy,\nand splicing the lambda list to use keyword args instead of the\n&optional ones at all the different callsites would be a major\neffort. After discussing the issue with Galdor we decided that\nestablishing a special in the form of the parameter *retry-syscalls*\nand defaulting it to t was the way to go. Neither of us could think of\na usecase where code wouldn't want to retry on an interrupt. the\nl-name defun now expands into a tagbody, and when it sees EINTR, it\nretrys automatically. This fixes the interrupt issue at all the places\nin cl-zmq that have been wrapped by this macro.\n\nGaldo independently patched the definition of zmq:poll with a keyword\nparameter, and that will have to be changed to mirror this approach\njust to keep things consistent, as the poll code path doesn't emanate\nout of defcfun*.","Brian O'Reilly"],["ae720fbb0e46333a954a5d9e165875894c16fb1b","78166c9f658faa0027cb8535eab9195aedb52f98@deepsky.com","modify the zmq:poll function to check for *retry-syscalls* instead of\nexplicitly passing the :retry parameter at the callsite. Export\n*retry-syscalls* from the zeromq package so it's available to importers.","Brian O'Reilly"],["605e4c87eac0ee17e1be70dd306709cb1c8fe57b","15db2432c91ed664fbad919ececaba8c4c264fe6@gmail.com","bump the version (the :retry keyword isn't available anymore)","Nicolas Martyanoff"]],"ref":"refs/heads/master","size":3,"head":"605e4c87eac0ee17e1be70dd306709cb1c8fe57b","push_id":43896909}