@ -26,6 +26,9 @@ using namespace boost;
using namespace boost : : interprocess ;
using namespace boost : : interprocess ;
using namespace boost : : posix_time ;
using namespace boost : : posix_time ;
// holds Bitcoin-Qt message queue name (initialized in bitcoin.cpp)
std : : string strBitcoinURIQueueName ;
# if defined MAC_OSX || defined __FreeBSD__
# if defined MAC_OSX || defined __FreeBSD__
// URI handling not implemented on OSX yet
// URI handling not implemented on OSX yet
@ -46,7 +49,7 @@ static bool ipcScanCmd(int argc, char *argv[], bool fRelay)
{
{
const char * strURI = argv [ i ] ;
const char * strURI = argv [ i ] ;
try {
try {
boost : : interprocess : : message_queue mq ( boost : : interprocess : : open_only , BITCOINURI_QUEUE_NAME ) ;
boost : : interprocess : : message_queue mq ( boost : : interprocess : : open_only , strBitcoinURIQueueName . c_str ( ) ) ;
if ( mq . try_send ( strURI , strlen ( strURI ) , 0 ) )
if ( mq . try_send ( strURI , strlen ( strURI ) , 0 ) )
fSent = true ;
fSent = true ;
else if ( fRelay )
else if ( fRelay )
@ -76,7 +79,7 @@ static void ipcThread(void* pArg)
{
{
// Make this thread recognisable as the GUI-IPC thread
// Make this thread recognisable as the GUI-IPC thread
RenameThread ( " bitcoin-gui-ipc " ) ;
RenameThread ( " bitcoin-gui-ipc " ) ;
try
try
{
{
ipcThread2 ( pArg ) ;
ipcThread2 ( pArg ) ;
@ -112,7 +115,7 @@ static void ipcThread2(void* pArg)
}
}
// Remove message queue
// Remove message queue
message_queue : : remove ( BITCOINURI_QUEUE_NAME ) ;
message_queue : : remove ( strBitcoinURIQueueName . c_str ( ) ) ;
// Cleanup allocated memory
// Cleanup allocated memory
delete mq ;
delete mq ;
}
}
@ -125,7 +128,7 @@ void ipcInit(int argc, char *argv[])
unsigned int nPriority = 0 ;
unsigned int nPriority = 0 ;
try {
try {
mq = new message_queue ( open_or_create , BITCOINURI_QUEUE_NAME , 2 , MAX_URI_LENGTH ) ;
mq = new message_queue ( open_or_create , strBitcoinURIQueueName . c_str ( ) , 2 , MAX_URI_LENGTH ) ;
// Make sure we don't lose any bitcoin: URIs
// Make sure we don't lose any bitcoin: URIs
for ( int i = 0 ; i < 2 ; i + + )
for ( int i = 0 ; i < 2 ; i + + )
@ -140,10 +143,10 @@ void ipcInit(int argc, char *argv[])
}
}
// Make sure only one bitcoin instance is listening
// Make sure only one bitcoin instance is listening
message_queue : : remove ( BITCOINURI_QUEUE_NAME ) ;
message_queue : : remove ( strBitcoinURIQueueName . c_str ( ) ) ;
delete mq ;
delete mq ;
mq = new message_queue ( open_or_create , BITCOINURI_QUEUE_NAME , 2 , MAX_URI_LENGTH ) ;
mq = new message_queue ( open_or_create , strBitcoinURIQueueName . c_str ( ) , 2 , MAX_URI_LENGTH ) ;
}
}
catch ( interprocess_exception & ex ) {
catch ( interprocess_exception & ex ) {
printf ( " ipcInit() - boost interprocess exception #%d: %s \n " , ex . get_error_code ( ) , ex . what ( ) ) ;
printf ( " ipcInit() - boost interprocess exception #%d: %s \n " , ex . get_error_code ( ) , ex . what ( ) ) ;